Мы разработали объект ActiveX, который вызывается через JavaScript в браузере.
Мы реализовали IObjectSafety, а также зарегистрировали эту dll с помощью regasm mydll.dll / tlb / codebase
Когда мы открываем эту страницу локально, мы получаем сообщение как: -
IE запретил этой странице запускать сценарии или элементы управления ActiveX? Затем мы должны выбрать Разрешить заблокированный контент для его запуска.
Однако такого сообщения нет, когда страница запускается с сервера ...
Почему это сообщение появляется локально? Как исправить это в коде объекта ActiveX?
Мы подписали ActiveX dll с помощью файла VS2010 snk ... Мы реализовали IObjectSafety для activex dll ... Мы зарегистрировали эту dll с помощью regasm mydll.dll / tlb / codebase Если бы я не реализовал вышеуказанные 2 шага, тогда бы У меня также была ошибка при открытии страницы в IE локально, а также на сервере?
1 ответ
Недостаточно подписать вашу DLL самогенерированным файлом .SNK. Вам необходимо купить полнофункциональный сертификат подписи Authenticode, выданный аккредитованным доверенным центром. Делайте покупки вокруг, варианты диапазонов, например с this на this.
После получения сертификата, вот как использовать его .
Требуется поддержка IObjectSafety
, но это не делает ваш контроль автоматически безопасным. Вы просто заявляете, что это безопасно, это заявление. Если ваш элемент управления развернут на 1000 ПК, а затем кто-то создаст троян VBScript, злоупотребляя API вашего элемента управления, вы можете получить судебный иск за ложное утверждение. Чтобы оставаться в безопасности, вы должны использовать что-то вроде Sitelock
шаблон.
Однако, если ваши страницы запускаются локально по протоколу file://
и выполняются вручную вашей DLL, это совсем другое дело. В этом случае вам не нужно подписывать свой контроль с помощью Authenticode . Однако все элементы управления ActiveX (безопасные и небезопасные) по умолчанию отключены из соображений безопасности. Подробнее: Общие сведения о блокировке зоны локального компьютера. Вы можете обойти это, используя Знак Интернета < / а>.
Похожие вопросы
Новые вопросы
.net
НЕ используйте для вопросов о .NET Core - используйте вместо этого [.net-core]. .NET Framework - это программная среда, предназначенная главным образом для операционной системы Microsoft Windows. Он включает в себя реализацию библиотеки базовых классов, общеязыковой среды выполнения (обычно называемой CLR), общей системы типов (обычно называемой CTS) и динамической среды исполнения. Он поддерживает множество языков программирования, включая C #, VB.NET, F # и C ++ / CLI.
localhost
? Он может принадлежать другой зоне безопасности IE. Сбросьте ВСЕ настройки IE до значений по умолчанию, отмените регистрацию элемента управления с помощьюregsvr32 /u control.dll
на клиентском ПК, на котором вы его тестируете, затем повторите попытку. Также обратите внимание на мое обновление оIObjectSafety
. Да, я считаю, что вам все еще нужен сертификат, если вы собираетесь управлять своим управлением через Интернет.localhost
принадлежит зоне "Интернет".file://
принадлежит зоне «Мой компьютер». У них разные настройки безопасности по умолчанию. Щелкните правой кнопкой мыши свою страницу в IE и проверьте ее зону в свойствах.