2017-06-29 49 views
1

有時我的Excel插件被禁用,如果它最終位於禁用的COM加載項中,我可以使用以下代碼啓用它。但是,如果它最終在禁用項目中,我無法使用此代碼啓用它。有沒有一種方法可以啓用禁用的物品。不知道我是否可以使用註冊表編輯器。以編程方式啓用Excel加載項

我得到一個COM異常{"Operation aborted (Exception from HRESULT: 0x80004004 (E_ABORT))"}

xl.Application myApp = new xl.Application(); 

    foreach (COMAddIn currentAddIn in myApp.COMAddIns) 
    { 
     if (currentAddIn.Description == "Create Excel AddIn" && !currentAddIn.Connect) 
     { 
      try 
      { 


       currentAddIn.Connect = true; 
      } 
      catch (Exception) 
      { 
       CommonMethods.ExceptionHandler("Create tab couldn't be enabled", new StackTrace(true).GetFrame(0).GetFileLineNumber(), new StackTrace(true).GetFrame(0).GetMethod()); 
      } 


      break; 
     } 

    } 


    return false; 
} 
+1

您無法阻止其他人禁用您。 「如果這是可能的,世界會變成什麼樣子?」 https://blogs.msdn.microsoft.com/oldnewthing/20040216-00/?p=40603 – mjwills

+0

@mjwills我不能在regedit中設置一些東西來啓用它嗎? –

+0

這只是爲了測試的目的,它不適用於其他用戶 –

回答

1

這是最好的,最有效的解決方案。

RegistryKey myKey = Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Office\Excel\Addins\Create.ExcelAddIn", true); 
     if (myKey != null) 
     { 
      myKey.SetValue("LoadBehavior", "3", RegistryValueKind.DWord); 
      myKey.Close(); 
     } 
+1

嗨,很高興你有它的工作,它是好的,但它不是最好的,因爲Re gistryKey是一個非託管資源,你必須處理它,這就是爲什麼在我給你看的鏈接中,我使用'using',例如'using(subkey = key.OpenSubKey(kn)){ –

-1

,我知道對於完全禁用加載項的唯一方法是刪除以下位置的註冊表鍵,但不能這樣做,而Excel是開放的(16.0更改爲Office版本) :

HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Word\Resiliency\DisabledItems\