變更目前的工作目錄

這邊是在討論區看到的,相關問題的詢問次數也不少,大家可以參考看看
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類別時我比較建議的方式,程式碼如下
Dim p As New Process
p.StartInfo.UseShellExecute = True
p.StartInfo.WorkingDirectory = Application.StartupPath
p.StartInfo.FileName = "副程式.exe"
p.Start()

相關參考
ProcessStartInfo.WorkingDirectory 屬性

留言

這個網誌中的熱門文章

開啟cshtml檔案時,出現『並未將物件參考設定為物件執行個體』的錯誤訊息

無法設定中斷點 尚未載入符號檔

DataGridView欄位計算總合