變更目前的工作目錄

摘要:變更目前的工作目錄

這邊是在討論區看到的,相關問題的詢問次數也不少,大家可以參考看看
Question - 原文OpenFileDialog 的問題
有兩個按鈕,A與B,按A可以執行主程式旁邊的一個副程式,裡頭的CODE大概像這樣:
Dim MyProcess As New System.Diagnostics.Process
MyProcess.StartInfo.FileName = "副程式.exe"
MyProcess.Start()
按B會跳出OpenFileDialog,讓使用者選擇檔案如果說,先按A再按B,沒問題。
但是,如果先按B再按A,就會出現錯誤(找不到副程式.exe),因為使用OpenFileDialog好像會更改的預設執行目錄。想請問大大,這個預設執行目錄的設定放在哪丫?


這問題主要是因為當你用"相對路徑"的時候要特別注意,由上面題目看起來,主、副程式應該都是在同一個資料夾內,而如果先有了OpenFileDialog的動作的話,由於工作目錄被變更了,所以產生了找不到檔案的問題。
那應該如何處理呢?下面這個是用Process類別時我比較建議的方式,程式碼如下

  1. Dim p As New Process  
  2. p.StartInfo.UseShellExecute = True  
  3. p.StartInfo.WorkingDirectory = Application.StartupPath  
  4. p.StartInfo.FileName = "副程式.exe"  
  5. p.Start()  

Dim p As New Process
p.StartInfo.UseShellExecute = True
p.StartInfo.WorkingDirectory = Application.StartupPath
p.StartInfo.FileName = "副程式.exe"
p.Start()

相關參考


ProcessStartInfo.WorkingDirectory 屬性