搜索外部程序

时间:2011-04-07 15:34:29

标签: .net wpf security filesystems external-process

我们正在开发一个与其他应用程序密切配合的WPF应用程序。现在,它正在使用Microsoft Excel。

我想在我们的WPF应用程序的安装中运行一些自定义代码,该应用程序扫描用户的计算机并找到Excel的位置,以便我可以将其保存在WPF程序的app.config文件中。稍后,当我们需要启动Excel来编辑文件时,我将在配置文件中使用此路径传递到Process.Start()。

我不想创建Excel加载项或模板(不是选项,所以不建议将其作为答案)。

我们需要担心哪些安全问题?这个计划是“犹太洁食”吗?如果我尝试使用另一个没有Excel可插拔功能的应用程序,该怎么办?您会建议使用哪种方法来查找和启动此应用程序?简单地要求用户找到程序而不是在文件系统中搜索它是否更好?

编辑:有人想讨论一般性问题吗?如果我没有启动Excel,还有其他一些工具(iTunes,Audacity等)怎么办?没有人讨论或谈论过安全问题。搜索可执行文件是否可以?我应该问用户在哪里找到它吗? /编辑

2 个答案:

答案 0 :(得分:2)

安装路径位于注册表中:

HKEY_LOCAL_MACHINE \ SOFTWARE \微软\办公室\ 14.0 \ Excel中\ InstallRoot

14.0可能会有所不同,具体取决于版本。

编辑: 通常,大多数安装程序将允许用户在任何他们想要的地方安装应用程序,因此应用程序可执行文件可以位于任何文件夹中的任何磁盘上,因此只能递归搜索所有驱动器上的所有文件夹(在搜索通用安装路径之后)是找到可执行文件的可靠方法。

因此,IMO最好向用户提供浏览对话框,并允许他们自己定位可执行文件。

答案 1 :(得分:0)

作为Excel的路径在“PATH”环境变量中注册,我原本认为运行带有filepath参数的“excel.exe”应该可以正常工作。

或者您可以查看注册表并找出与之关联的“打开方式”应用程序,并建议使用哪一个(使用可选的make作为您应用的默认设置)。