簡體   English   中英

使用沒有絕對路徑的Process調用exe

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM