Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Ошибка Установки UAC при Запуске ActiveX-контрола на Windows 7/8: Решение Проблемы с Правами Администратора

Delphi , Технологии , ActiveX

Разработчики часто сталкиваются с проблемами, связанными с правами администратора при работе с ActiveX-контролами в Internet Explorer, особенно на операционных системах Windows 7 и 8. Одна из таких проблем связана с запуском исполняемых файлов (.exe) без повышения привилегий. В данной статье мы рассмотрим, как можно решить проблему, при которой ActiveX-контроль не может запустить исполняемый файл без запроса на повышение привилегий в пользовательских сессиях без администраторских прав.

Проблема

Разработанный ActiveX-контроль предназначен для установки в Internet Explorer 8 и выше. Контроль проверяет наличие ключа в реестре и, при необходимости, загружает и устанавливает небольшой инсталляционный пакет. Для пользователей с правами администратора все работает корректно на Windows 7 и 8 с любой версией IE 8+.

Однако, для пользователей без прав администратора, несмотря на то, что сам контроль должен быть установлен администратором, он запускается, загружает исполняемый файл client_setup.exe в папку C:\Users\user\AppData\Local\Temp\Low\, но при попытке его запуска появляется запрос на повышение привилегий и УАК (User Account Control) требует администраторских прав. Инсталляционный пакет, скачанный и установленный пользователем без администраторских прав, не требует повышения привилегий, что указывается в манифесте исполняемого файла.

Пример кода на Object Pascal (Delphi)

function RunProcess(FileName: string; ShowCmd: DWORD; wait: Boolean; ProcID: PDWORD): Longword;
var
  StartupInfo: TStartupInfo;
  ProcessInfo: TProcessInformation;
begin
  FillChar(StartupInfo, SizeOf(StartupInfo), #0);
  StartupInfo.cb := SizeOf(StartupInfo);
  StartupInfo.dwFlags := STARTF_USESHOWWINDOW or STARTF_FORCEONFEEDBACK;
  StartupInfo.wShowWindow := ShowCmd;
  if not CreateProcess(nil,
    @Filename[1],
    nil,
    nil,
    False,
    CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS,
    nil,
    nil,
    StartupInfo,
    ProcessInfo)
    then
    Result := WAIT_FAILED
    // ... остальной код ...
end;

Анализ проблемы

ActiveX-контроль выполняется с низкими привилегиями, как и процесс IE. Однако, почему для запуска инсталляции требуется повышение привилегий? Инсталляционный пакет не требует администраторских прав, и это указано в манифесте.

Попытки добавить ActiveX-контроль в исключения политики повышения привилегий в IE не увенчались успехом.

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Low Rights\ElevationPolicy

Подтвержденное решение

Windows UAC использует некоторые критерии для определения инсталляторов. Если имя файла содержит слова "setup", "update", "install", UАК автоматически запустит программу с администраторскими привилегиями. Это детектирование основано на эвристике.

Достаточно переименовать client_setup.exe в client.exe, и инсталляция будет выполнена без запроса УАК.

Рекомендации

  • Используйте Object Pascal (Delphi) для создания ActiveX-контролей и их функций, таких как RunProcess.
  • Убедитесь, что манифест исполняемого файла корректно отражает требования к привилегиям.
  • При работе с УАК важно учитывать, что ActiveX-контроль всегда выполняется с низкими привилегиями, если включена UAC.
  • В случае возникновения проблем с запуском исполняемых файлов, проверьте их на соответствие эвристическим правилам УАК.

Заключение

Проблема с запуском исполняемых файлов из ActiveX-контролей в IE может быть решена путем изменения имени файла, чтобы оно не соответствовало эвристическим правилам УАК. Это простое решение может значительно упростить процесс установки для конечных пользователей.

Создано по материалам из источника по ссылке.

Проблема заключается в том, что разработанный ActiveX-контроль для Internet Explorer не может корректно запустить исполняемый файл на пользовательских сессиях без администраторских прав из-за требования User Account Control к повышению привилегий, что св


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: ActiveX ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-06-15 22:17:17/0.003633975982666/0