2015-05-21 117 views
0

我在C#中創建了一個瀏覽器助手對象,它工作正常。我只有一個小問題,那就是當我註冊插件並轉到Internet Explorer並單擊託管插件時。彈出的窗口顯示了我的插件的名稱,比如namespace.class,其中namespace是我的項目的命名空間,class是我項目中的類名。我曾嘗試在AssemblyInfo.cs中設置所有我能想到的東西,但沒有改變這個名稱。命名瀏覽器助手對象

[assembly: AssemblyTitle("My title1")] 
[assembly: AssemblyDescription("My title1")] 
[assembly: AssemblyConfiguration("")] 
[assembly: AssemblyCompany("My title1")] 
[assembly: AssemblyProduct("My title1")] 
[assembly: AssemblyCopyright("My title1")] 
[assembly: AssemblyTrademark("My title1")] 
[assembly: AssemblyCulture("")] 
[assembly: AssemblyDefaultAlias("My addon")] 

這是我的currecnt程序集設置,但它沒有做我想做的。我也讀過關於使用ProgId的一些信息,但是我不太清楚在哪裏設置這個,但我認爲我已經試過把它放到現在,它不起作用。

我曾嘗試將ProdId放在命名空間和類之間,但它似乎沒有做任何事情。這是放置這個的好地方嗎?

[ 
ComVisible(true), 
Guid("4070B9C7-D748-4A07-920B-63B3533F86F1"), 
ClassInterface(ClassInterfaceType.None), 
ProgId("My Adon") 
] 

回答

1

是的,它對裝配沒有興趣。它對實現瀏覽器助手對象的類感興趣。使用[ProgId("whatever you want")]屬性更改類的ProgId。默認情況下,如果你沒有定義它,ProgId默認爲「%Namespace%。%Classname%」,無論你定義的命名空間和類是什麼。 ProgId屬性在System.Runtime.InteropServices中。

0

Finaly解決了這個問題。

[ComRegisterFunctionAttribute] 
    public static void Register(Type type) 
    { 
     string guid = type.GUID.ToString("B"); 
     RegistryKey registryKey = Registry.LocalMachine.OpenSubKey(BHOKEYNAME, true); 
     if (registryKey == null) 
      registryKey = Registry.LocalMachine.CreateSubKey(BHOKEYNAME); 

     RegistryKey ourKey = registryKey.OpenSubKey(guid); 
     if (ourKey == null) 
      ourKey = registryKey.CreateSubKey(guid); 

     RegistryKey addonNameKey = Registry.ClassesRoot.OpenSubKey(@"CLSID\" + guid, true); 
     if (addonNameKey == null) 
      addonNameKey = Registry.LocalMachine.CreateSubKey(@"CLSID\" + guid); 

     addonNameKey.SetValue("", "ESSO"); 
     addonNameKey.Close(); 
     ourKey.SetValue("NoExplorer", 1); 

     registryKey.Close(); 
     ourKey.Close(); 
    } 

有了這個COM註冊功能和manualy改變我叫addonNameKey我能夠改變BHO的顯示名稱的鍵的值。由於我也在使用visual studio安裝程序,因此我需要添加一個安裝程序類來使BHO寄存器具有此名稱。

相關問題