簡體   English   中英

C#:如何知道是否安裝了某些Office 2003或2007應用程序?

[英]C#: How to know whether certain Office 2003 or 2007 application is installed?

我需要知道Windows Forms .net 2.0 C#應用程序中是否安裝了Microsoft Word,Excel,Outlook,Project等。
最初的嘗試是簡單地嘗試創建應用程序對象並捕獲任何異常,但這非常耗時。
有沒有更快的方法來檢測到這一點? 像檢查注冊表值,還是使用COM包裝程序的其他技術?

這應該工作,如所描述這里 但是,這不是一個非常優雅的解決方案,因為它是特定於版本的,並且將在下一個Office版本中發布。 此示例是針對Office 2003的,因此,如果不進行更新,它將無法與Office 2007一起使用。

const string ASSEMBLY2003 = "Microsoft.Office.Interop.Excel, Version=11.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c";  

static bool IsAssemblyInstalled(string assembly)  
{  
   try 
   {  
       s_assemblyExcel = Assembly.Load(assembly);  
       return true;  
   }   
   catch 
   {  
       return false;  
   }  
} 

您可以使用MSI(Windows安裝程序)API來查找機器上是否存在相關的產品/包裝/組件代碼。 通過P / Invoke使用這些相當簡單。

或者,您可以在注冊表中查找。 例如,Word 2007將其安裝位置放在HKLM\\SOFTWARE\\Microsoft\\Office\\12.0\\Word\\InstallRoot

如果您打算使用互操作組件,那么這對您沒有幫助,但確實可以肯定地告訴您是否已安裝各種組件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM