Информация издателя «Недоступно» в BHO, разработанном с использованием .Net для Internet Explorer - PullRequest
2 голосов
/ 10 января 2012

Я много искал здесь на SOF, а также на форумах MSDN, но, к сожалению, ни один метод не мог работать для меня. Вот проблема и применяемые методы.

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

Проблема:

Проблема: Когда я перехожу к «Управляемым надстройкам» в параметрах 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);

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

Спасибо

Steve

1 Ответ

1 голос
/ 29 марта 2012

После установки следующей информации в файле AssemblyInfo.cs создайте DLL.

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

Когда вы зарегистрируете эту DLL, используйте следующую команду.

regasm /register /codebase YourDLL.dll

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

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

...