如何通過在.net中知道其名稱來找到另一個exe的路徑?C#如何註冊EXE?
我會向OS環境變量添加名稱嗎? 其他應用程序是否必須在其他地方「註冊」自己?
我需要應用程序A啓動應用程序B並調用一些WCF服務。
謝謝!
如何通過在.net中知道其名稱來找到另一個exe的路徑?C#如何註冊EXE?
我會向OS環境變量添加名稱嗎? 其他應用程序是否必須在其他地方「註冊」自己?
我需要應用程序A啓動應用程序B並調用一些WCF服務。
謝謝!
要回答你的問題:只需知道名字就無法知道路徑。一個exe可以駐留在文件系統的任何地方。可能有多個不知道彼此的實例。完全不同的多個exe文件可以具有相同的名稱。
你可以採取幾種方法之一克服這個,這取決於你正在靶向的exe:
對於兩個中f這些選項可以保存結果,以便下次運行應用程序時不必再次執行它。
搜索文件系統可能需要一些時間,您不能保證找到exe(取決於您的應用程序運行的用戶級別),並且您可能會得到誤報,尤其是如果應用程序被稱爲愚蠢像設置.exe。
讓用戶在第一次運行時找到exe文件可能是最可靠的找到它的方法,但是如果應用程序運行但目標exe文件不再位於指定位置,則必須決定如何處理,或者用戶選擇了錯誤的exe。
如果您對應用程序B(即它是您的產品)有一定的控制權,那麼您可以考慮在安裝應用程序B時向註冊表中的已知位置添加一些信息,以便應用程序A可以輕鬆找到它。您仍然需要制定計劃B,以防萬一信息丟失。
在配置設置中引用一個exe文件快捷方式的路徑,這樣,如果exe文件在快捷方式中移動,仍然是最新的。嘗試一下,製作一個exe的快捷方式,然後剪切並粘貼到其他地方的exe,然後雙擊快捷方式,你會看到它指向exe的新位置,因此不會要求更改應用程序A,如果位置應用程序B更改。
真的,只需將App B設置爲Windows服務並在需要時啓動它。
UPDATE:
另一個建議是創建一個硬鏈接到APPB的EXE:
mklink /H AppB-link.exe path_to_actual_exe
或者一個符號鏈接到整個目錄,應用B所在:
mklink /D virtual_directory path_to_actual_directory
你不能把B的路徑放在應用程序A的配置設置中嗎? – Amy 2010-12-01 01:36:14
這會工作,會有一個更清潔的解決方案?更清晰的意思是,如果應用程序B的位置發生更改,則不需要更改應用程序A.感謝您的評論。 – dnndeveloper 2010-12-01 01:44:53
將路徑置於配置設置中將無需在應用程序B移動時修改應用程序A.您只需修改ApplicationA.exe.config文件即可。不需要重新編譯。 – 2010-12-01 01:50:47