![](/img/trans.png)
[英]is there any difference between work om Office 2007 and 2003 in C#
[英]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.