вторник, 18 марта 2014 г.

UAC манифест

В предыдущей статье было описано, как использовать манифест чтобы указать приложению на нужные dll файлы - так называемый механизм частных сборок. Помимо этого, используя манифест, можно назначить уровень доступа к приложению. Например, необходимо, чтобы приложение запускалось только от имени администратора.

Чтобы добиться желаемого результата, нужно создать файл манифеста в каталоге с исполняемым файлом. Пускай имеется такая файловая структура некоего приложения:
downloads /
    downloads.exe
    downloads.ini
    libgcc_s_dw2-1.dll
    libstdc++-6.dll
    mingwm10.dll
    QtCore4.dll
    QtGui4.dll
    QtNetwork4.dll
Создаваемый файл манифеста должен иметь название downloads.exe.manifest:
downloads /
    downloads.exe
    downloads.exe.manifest
    downloads.ini
    libgcc_s_dw2-1.dll
    libstdc++-6.dll
    mingwm10.dll
    QtCore4.dll
    QtGui4.dll
    QtNetwork4.dll
Содержимое файла downloads.exe.manifest:
<?xml version='1.0' encoding='UTF-8' standalone='yes'?>
<assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'>
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
    <security>
      <requestedPrivileges>
        <requestedExecutionLevel level="requireAdministrator" uiAccess="false"/>
      </requestedPrivileges>
    </security>
  </trustInfo>
</assembly>

Важно! Хочется отметить, что этот манифест можно внедрить в исполняемый файл. Как это сделать можно посмотреть в статье Внедрение манифеста в исполняемый файл. При этом изменить контроль доступа к приложению сможет только разработчик. Описанный в этой статье подход дает возможность контролировать доступ к приложению на уровне администрирования.

Удачи!

Комментариев нет:

Отправить комментарий