【发布时间】:2011-09-19 00:52:02
【问题描述】:
我找到了一段解释如何使用System.Diagnostics.Process.Start 在 C# 中运行外部程序的代码。 sn -p 显示正在运行的cmd.exe,它在路径中。
假设有一些外部程序(例如Beyond Compare)。不知道有没有安装在电脑上。如何检查该程序是否使用 C# 安装?如果程序已安装,我想找到路径以便启动它。
【问题讨论】:
-
您可以做一些不同的事情,检查注册表是否有任何添加的注册表项 (HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall)。或者假设大多数程序都安装在 Program Files 目录中,您可以使用系统变量 %ProgramFiles% 获取 Program Files 路径。你到底想完成什么?我认为投票已完成,因为您的问题不清楚。
-
删除了代码示例,因为它具有误导性。
-
@siride 只要提到 Process.Start 就足够了。样本占 questin 身体的 80%。
-
@roymustang86 和@MehdiHadjar 建议我们迭代
SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall下的已安装程序列表——这是最接近实际问题的答案。它至少可以让您检测程序是否已安装,如果您知道它的程序代码 GUID 或 DisplayName。从那里,如果设置了 InstallLocation,您至少可以知道可执行文件 可能 所在的路径。您仍然需要知道实际的可执行文件名,并且它需要比应用程序启动更多的权限。 (@roymustang86 - 在 64 位系统上小心使用 %programfiles%)
标签: c#