使用C#启动.exe文件而无需指定路径

3
我可以用C#代码启动exe文件吗?我有以下代码:
Process.Start( @"C:\Program Files (x86)\Photoshop\Photoshop.exe");

但是在其他机器上路径可能会不同。那么有没有什么想法可以以不同的方式运行 .exe 文件呢?

谢谢!


你可以避免将路径硬编码到“Program Files”目录,但这仍然无法解决问题。我可能已经将Photoshop安装到不同的目录中(事实上我确实这样做了),或者我根本没有安装Photoshop。 - Cody Gray
2
扫描注册表以查找Photoshop的安装路径。 - Abion47
@Abion47 并非所有的程序都将它们的安装目录存储在注册表中。 - BradleyDotNET
@BradleyDotNET 大多数有正式安装程序的软件都会有。Photoshop就是其中一个例子。 - Abion47
这个问题非常明确而具体:投票重新开放。 - Mafii
3个回答

5
我找到了解决方案。
Activator.CreateInstance(Type.GetTypeFromProgID("Photoshop.Application"));

1

不,如果不知道exe文件的位置,就无法运行它。

"例外"是当可执行目录在PATH环境变量中时,才可以运行。这就是为什么:

Process.Start("notepad.exe");

工作。


虽然从技术上讲这是正确的,但是除了硬编码之外还有其他获取路径的方法。 - Abion47
@Abion47 当然,有特殊的文件夹类等,但这并不能解决无论exe位于何处都能启动的基本问题。 - BradleyDotNET

0

如果我理解正确的话,可执行文件在您的范围内,所以只需将其放入项目目录中并不指定任何路径(默认为相对路径):

Process.Start("Photoshop.exe");

除非他正在编写一个与Photoshop一起安装的应用程序,否则这似乎非常不可能。 - BradleyDotNET
@Dr.Haimovitz 我认为你不能用你的代码运行所有应用程序。有一些应用程序,比如记事本,你可以不用路径来运行! - Doniyor Niazov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接