我需要知道 Windows Forms .net 2.0 C# 应用程序中是否安装了 Microsoft Word、Excel、Outlook、Project 等。
第一次尝试是简单地尝试创建应用程序对象并捕获任何异常,但这太耗时了。
有没有更快的方法来检测这个?比如检查注册表值,或者使用 COM 包装器的其他技术?
最佳答案
您可以使用 MSI (Windows Installer) API 来查明机器上是否存在相关的产品/软件包/组件代码。这些通过 P/Invoke 使用起来相当简单。
或者,您可以查看注册表。例如,Word 2007 将其安装位置放在 HKLM\SOFTWARE\Microsoft\Office\12.0\Word\InstallRoot
。
如果您计划使用互操作组件,这对您没有帮助,但它确实以合理的确定性告诉您是否安装了各种东西。
关于C#:如何知道是否安装了某个Office 2003或2007应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/531659/