2012-11-28 50 views
0

這只是一個簡單的問題,我相信有人能夠很快回答,因爲我很可能只是錯過了一些東西。C#Process.Start在批處理文件中搞亂了URI

可以說我有以下的目錄佈局

Folder1 
    -> CurrentlyRunning.EXE 
    -> Folder2 
    ProcessToStart.Bat 
    ApplicationToStartFromBat.exe 

這是應用程序中的代碼。

CurrentlyRunning.EXE:

 var proc = new Process 
      { 
       StartInfo = 
        { 
         FileName = "Folder2/ProcessToStart.Bat", 
         WindowStyle = ProcessWindowStyle.Hidden, 
         CreateNoWindow = true, 
         UseShellExecute = false 
        } 
      }; 

     proc.Start(); 

ProcessToStart.Bat:

START ApplicationToStartFromBat.exe 

現在,如果我在上面運行通過雙擊ProcessToStart.Bat,它會打開ApplicationToStartFromBat.exe沒有問題(這是很好的)。如果我運行CurrentlyRunning.EXE(它將執行我上面發佈的代碼),BAT文件失敗,說它找不到我的EXE(這真的很奇怪)。

如果我改變BAT文件:

START Folder2/ApplicationToStartFromBat.exe 

,然後運行CurrentlyRunning.EXE,蝙蝠會再正常打開ApplicationToStartFromBat.exe。我的問題是我不能因爲某種原因改變蝙蝠內部的代碼。

爲什麼proc.Start()導致bat文件搜索根目錄改變,我該如何阻止這種情況發生?

感謝

回答

1

我認爲這是與其中工作目錄是您的exe文件做。

嘗試使用ProcessStartInfo.WorkingDirectory爲您的批處理文件設置正確的目錄。

var proc = new Process 
{ 
    StartInfo = 
    { 
     FileName = "Folder2/ProcessToStart.Bat", 
     WorkingDirectory = "DirectoryPath"; 
     WindowStyle = ProcessWindowStyle.Hidden, 
     CreateNoWindow = true, 
     UseShellExecute = false 
    } 
}; 
proc.Start();