2012-01-10 3 views
2

Я много искал здесь, на SOF, а также на форумах MSDN, но, к сожалению, ни один метод не мог работать для меня. Вот проблема и применяемые методы.Информация об издателе «Недоступна» в BHO, разработанной с использованием .Net для Internet Explorer

  1. Я разработал панель инструментов с использованием .Net для Internet Explorer 7. Он зарегистрирован как BHO (Browser Helper Object»с помощью C# инсталлятора код, который следует.
  2. Я использую установки MSI и выборочной установки файл класса для регистрации BHO. Вот как я это делаю.
  3. Я подписал обе библиотеки DLL, сгенерировал и подписал как MSI, так и EXE для MSI. После установки я проверяю в c: \ Program Files \ My Test Extension \ that мое расширение имеет также цифровую подпись.

Проблема:

Проблема: когда я перешел в «Управляемые аддоны» в «Параметры обозревателя Internet Explorer 7», я вижу расширение/панель инструментов под «Недоступно» вместо названия компании, как установлено в свойствах расширения/сборки. «Издатель» недоступен, когда я нажимаю «дополнительная информация».

Пожалуйста, расскажите, как я могу установить «Информация для издателя»? Я использую ключ и действительный сертификат, выпущенный Verisign Inc.

Пожалуйста, сообщите, если я что-то делаю неправильно или что-то не хватает. Вот мой код установки/регистрации.

  string name = t.Name; 
     string help = t.Name; 
     rkClass.SetValue(null, name); 
     rkClass.SetValue("MenuText", name); 
     rkClass.SetValue("HelpText", help); 

     rkLMClass.SetValue(null, name); 
     rkLMClass.SetValue("MenuText", name); 
     rkLMClass.SetValue("HelpText", help); 

     rkInprocServer32.SetValue(null, "mscoree.dll"); 
     rkInprocServer32.SetValue("ThreadingModel", "Both"); 
     rkInprocServer32.SetValue("Class", t.FullName); 
     rkInprocServer32.SetValue("Assembly", "MyTestExtension, Version=1.0.0.0"); 
     rkInprocServer32.SetValue("RuntimeVersion", "v2.0.50727"); 

     rkLMInprocServer32.SetValue(null, "mscoree.dll"); 
     rkLMInprocServer32.SetValue("ThreadingModel", "Both"); 
     rkLMInprocServer32.SetValue("Class", t.FullName); 
     rkLMInprocServer32.SetValue("Assembly", "MyTestExtension, Version=1.0.0.0"); 
     rkLMInprocServer32.SetValue("RuntimeVersion", "v2.0.50727"); 

     if (0 != (style & BandObjectStyle.Vertical)) 
     { 
      rkCat.CreateSubKey("{00021493-0000-0000-C000-000000000046}"); 
      rkLMCat.CreateSubKey("{00021493-0000-0000-C000-000000000046}"); 
     } 
     if (0 != (style & BandObjectStyle.Horizontal)) 
     { 
      rkCat.CreateSubKey("{00021494-0000-0000-C000-000000000046}"); 
      rkLMCat.CreateSubKey("{00021494-0000-0000-C000-000000000046}"); 
     } 
     if (0 != (style & BandObjectStyle.TaskbarToolBar)) 
     { 
      rkCat.CreateSubKey("{00021492-0000-0000-C000-000000000046}"); 
      rkLMCat.CreateSubKey("{00021492-0000-0000-C000-000000000046}"); 
     } 
     if (0 != (style & BandObjectStyle.ExplorerToolbar)) 
      Registry.LocalMachine.CreateSubKey(@"SOFTWARE\Microsoft\Internet Explorer\Toolbar").SetValue(guid, name); 

     // register as BHO 
     RegistryKey bhoKey = Registry.LocalMachine.CreateSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Browser Helper Objects\" + guid); 
     bhoKey.SetValue("NoExplorer", 1, RegistryValueKind.DWord); 

Ваша помощь очень ценится.

Благодаря

Стив

ответ

1

После набора следующие данные в файл AssemblyInfo.cs построить DLL.

[assembly: AssemblyCompany("Your publisher name")] 

При регистрации этой библиотеки используйте следующую команду.

regasm /register /codebase YourDLL.dll 

Теперь он покажет ваше имя издателя в управлении аддоном в IE.

Надеюсь, что это имеет смысл.