我有一個啓動「自定義操作」的C#代碼,通常是在機器上安裝/重新安裝Windows服務的.bat文件,但我的應用程序只知道此自定義操作可以使用Process.Start()啓動。自定義操作在我的應用程序將文件下載到用戶定義的文件夾時觸發。 這是我的文件夾結構:「新」包含新文件,「服務」包含用於運行Windows服務的文件。以管理員身份啓動批處理並保留在當前文件夾中
我的批處理文件看起來像這樣:
net stop DataExchangeProxyService
installutil /u .\service\DataExchangeProxyService.exe
copy .\new\*.* .\service
installutil .\service\DataExchangeProxyService.exe
net start DataExchangeProxyService
PAUSE
問題是當我開始從C#的過程與 「運行方式」 的動詞,那麼當前directoy爲「C:\ Windows \ System32下...「
Process process = new Process();
ProcessStartInfo startinfo = new ProcessStartInfo();
startinfo.FileName = Path.Combine(this.destinationFolder, customAction);
startinfo.Verb = "runas";
process.StartInfo = startinfo;
process.Start();
這樣我的進程無法找到這些文件,因爲它沒有在目標文件夾中運行。批處理文件必須是這樣的,因爲它不能包含絕對路徑。如何使進程停留在當前目標文件夾中?
我設置此屬性使用從startinfo.FileName和CMD窗口提取的值仍然顯示該批處理在「C:\ Windows \ System32 ...」中執行 – vpetrovic