我编写了一个需要使用
调用外部exe的程序Process proc = Process.Start(filepath).
我指定了exe的绝对路径,它工作正常。但是,我需要在不同的计算机上使用此程序。每次exe都有不同的绝对路径,我需要更改这部分的代码。我想知道有没有办法让我不需要更改代码?提前谢谢!
答案 0 :(得分:2)
你问的是错误的问题。是不是如何修改API以满足您的固定需求(“启动过程无需了解路径”,暂时忽略了什么是巨大的安全问题)。您应该问的问题是如何修改我的代码以匹配我使用的API?
如果在给出完整路径的情况下启动进程会更好(如果可执行文件名在%PATH%中,但这是一个不同的主题,它也可以工作),让app找出正确的路径,然后启动进程。有无数种方法可以实现这一目标。可能最安全的选择是使用指向路径的App.Setting。在部署时,应用程序已正确配置所需程序的位置。还有(很多)方法可以做到这一点,这将取决于你实际想要解决的问题,需要更多细节。
答案 1 :(得分:1)
如果两个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);
答案 2 :(得分:0)
在Windows服务中,您可以执行以下操作来获取当前正在运行的程序集的目录,然后生成指向您的exe的正确路径:
var directory = Path.GetDirectoryName(
new Uri(Assembly.GetExecutingAssembly().CodeBase).LocalPath);
var exeLocation = Path.Combine(directory,"myExe.exe");