鼠標雙擊打開exe程序和System.Diagnostics.Process.Start(@"c:\xxx.exe")打開exe程序有什麼區別?

http://note.youdao.com/share/?id=cc76e50805fb3a39ebaaa6ceabdb99c5&type=noteide

今天在寫程序的時候遇到一個問題,我須要在程序運行的過程當中打開一個bat批處理文件來註冊一些控件。
spa

但是,遇到一個奇怪的狀況就是:若是手動鼠標雙擊這個bat文件,控件能夠註冊成功;但在代碼中經過System.Diagnostics.Process.Start(@"c:\xxx.bat")的方式打開bat文件,控件註冊卻老是沒有效果,就像沒有註冊成功同樣。
3d

通過一番查找資料,終於知道了其中的緣由,以下圖,在原代碼的基礎上添加紅框中的那一行代碼便可。
orm


QQ截圖20140807170710.png


如下是MSDN對WorkingDirectory屬性的解釋:
blog

1.png



其實,若是被須要經過System.Diagnostics.Process.Start()打開的程序是一個獨立的exe文件或者bat文件,WorkingDirectory屬性能夠不設置;可是若是被System.Diagnostics.Process.Start()打開的這個程序或者批處理文件還須要調用配置文件或者是其餘的什麼文件,則必須設置WorkingDirectory,將工做目錄指向須要被調用的配置文件所在的目錄。不然,這個經過System.Diagnostics.Process.Start()打開的程序將會找不到該配置文件。
get

因爲個人程序中這個bat批處理文件須要調用外部的控件進行註冊,因此,若是不設置WorkingDirectory,bat就找不到那些控件進行註冊,因此老是註冊失敗。it

相關文章
相關標籤/搜索