[英]call exe using Process without absolute path
我編寫了一個需要調用外部exe的程序
Process proc = Process.Start(filepath).
我指定了exe的絕對路徑,它工作正常。 但是,我需要在不同的計算機上使用此程序。 每次exe都有不同的絕對路徑,我需要更改這部分的代碼。 我想知道有沒有辦法讓我不需要更改代碼? 提前致謝!
你問的是錯誤的問題。 是不是如何修改API以滿足您的固定需求(“啟動過程無需了解路徑”,暫時忽略了什么是巨大的安全問題)。 您應該問的問題是如何修改我的代碼以匹配我使用的API?
如果在給出完整路徑的情況下啟動進程會更好(如果可執行文件名在%PATH%中,它也有效,但這是一個不同的主題),請讓應用程序找出正確的路徑,然后啟動該進程。 有無數種方法可以實現這一目標。 可能最安全的選擇是使用指向路徑的App.Setting。 在部署時,應用程序已正確配置所需程序的位置。 還有(很多)方法可以做到這一點,這將取決於你實際想要解決的問題,需要更多的細節。
如果兩個exe文件都在同一個文件夾中,那么
的WinForms:
var filepath = Path.Combine(Path.GetDirectoryName(Application.ExecutablePath), otherexename);
Process.Start(filepath);
WPF:
var filepath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, otherexename)
Process.Start(filepath);
在Windows服務中,您可以執行以下操作來獲取當前正在運行的程序集的目錄,然后生成到exe的正確路徑:
var directory = Path.GetDirectoryName(
new Uri(Assembly.GetExecutingAssembly().CodeBase).LocalPath);
var exeLocation = Path.Combine(directory,"myExe.exe");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.