Я работаю над веб-приложением, которому для работы нужен элемент управления ActiveX. Он отлично устанавливается, когда у пользователя есть права администратора, но в противном случае не загружается. Это задумано, и если да, то где-то это задокументировано? (желательно MSDN)
Это наш собственный контроль для внутреннего приложения.





Сложный ответ: да. Учетная запись пользователя должна быть частью группы, которая предоставляет привилегию регистрации библиотек (dll) или элементов управления (ocx), или ей необходимо напрямую назначить привилегию.
Простой ответ: нет. Только учетные записи с административным правом устанавливать OCX или DLL могут устанавливать элементы управления Active-X (по дефолт эти учетные записи являются частью групп «Администраторы», «Администраторы домена» или «Опытные пользователи»).
Обновлено: я думаю, этот вопрос был изменен ... Да, это задумано.
Это не совсем правильно; учетные записи без прав администратора могут устанавливать элементы управления, если они предназначены для установки в HKEY_CURRENT_USER вместо HKEY_LOCAL_MACHINE, который используется по умолчанию. HKEY_CLASSES_ROOT - это комбинация этих двух, при этом HKCU переопределяет ключи HKLM. См. Мой ответ для получения дополнительной информации
Спасибо за лакомый кусочек, Таксилиан, я не знал об этом. +1
Вы можете, если используете Vista с IE8.
http://msdn.microsoft.com/en-us/library/dd433049%28VS.85%29.aspx
На самом деле ни один из этих ответов не является полностью правильным; если вы устанавливаете элемент управления ActiveX для каждого пользователя, он будет нормально работать без административных привилегий, независимо от группы, в которой находится пользователь. Обычно это включает установку его в HKEY_CURRENT_USER вместо HKEY_LOCAL_MACHINE.
В зависимости от того, что написано в вашем элементе управления activex, это может быть легко или сложно изменить; с ATL 9 это довольно просто, так как вам просто нужно вызвать функцию:
AtlSetPerUserRegistration(perUser);
FireBreath делает это по умолчанию, поэтому права администратора не требуются для установки плагина / элемента управления; у него также есть обходной путь для более старых версий ATL (ATL 9 - VS 2008). Это все C++, поэтому, если ваш элемент управления написан на чем-то еще, я не знаю, как это исправить, но это должно, по крайней мере, помочь вам начать работу.
К вашему сведению, у нас были некоторые проблемы с этим способом, когда перемещаемые профили удаляли все элементы управления ActiveX для каждого пользователя при выходе из системы.
просто из интереса, какой контроль вам нужен? Я не думаю, что смогу создать приложение, требующее ActiveX, не осознавая сложностей до начала разработки.