Недавно столкнулся с необходимостью создания приложения, требующего повышения привилегий для запуска в Windows 7. Оказалось, создать такое приложение совсем несложно. Сейчас на практическом примере мы рассмотрим, как это можно сделать.
Настройка среды
Поставленную задачу мы будем решать при помощи Microsoft Visual Sutdio 2008. В моем распоряжении в этот самый момент находится редакция Team Edition. Для реализации задуманного потребуется наличие некоторых компонентов от Visual C++. Если вы пишете, например, только на C#, или вы начинающий разработчик, вы могли пропустить установку этих компонентов:
Реализация задачи
После того, как компоненты доставлены, создаем новый проект. Для ясности задачи в нашем случае это будет обычный проект Windows Forms:
Ничего писать мы в нем не будет, а перейдем прямо в свойства проекта и исключим из него манифест:
Компилим проект, и создаем командный файл (*.bat или *.cmd) вот такого содержания:
Положите его рядом со скомпилированным бинарником uactest.exe.
Теперь запустите блокнот, и вставьте туда следующий текст:
Сохраните файл c параметрами, указанными на рисунке, в ту же папку, куда вы сохранили командный файл.
Запустите командный файл. У вас должно получиться что-то вроде этого:
Выводы
В данной статье был рассмотрен общий поход по созданию приложений, требующих повышенных привилегий администратора для своего запуска. Методика основывается на на внедрении в ресурсы специально подготовленного манифеста и не претендует на уникальность или на прямое руководство к действию.
Настройка среды
Поставленную задачу мы будем решать при помощи Microsoft Visual Sutdio 2008. В моем распоряжении в этот самый момент находится редакция Team Edition. Для реализации задуманного потребуется наличие некоторых компонентов от Visual C++. Если вы пишете, например, только на C#, или вы начинающий разработчик, вы могли пропустить установку этих компонентов:
Реализация задачи
После того, как компоненты доставлены, создаем новый проект. Для ясности задачи в нашем случае это будет обычный проект Windows Forms:
Ничего писать мы в нем не будет, а перейдем прямо в свойства проекта и исключим из него манифест:
Компилим проект, и создаем командный файл (*.bat или *.cmd) вот такого содержания:
@echo off
SetLocal EnableExtensions DisableDelayedExpansion
cd /d %~dp0
"%programfiles%\Microsoft SDKs\Windows\v6.0A\bin\mt.exe" -manifest "%~dp0uactest.exe.manifest" -outputresource:"%~dp0uactest.exe";#1
pause
Положите его рядом со скомпилированным бинарником uactest.exe.
Теперь запустите блокнот, и вставьте туда следующий текст:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <assemblyIdentity version="1.0.0.0" processorArchitecture="X86" name="Uactest" type="win32"/> <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3"> <security> <requestedPrivileges> <requestedExecutionLevel level="requireAdministrator"/> </requestedPrivileges> </security> </trustInfo> </assembly>
Сохраните файл c параметрами, указанными на рисунке, в ту же папку, куда вы сохранили командный файл.
Запустите командный файл. У вас должно получиться что-то вроде этого:
Выводы
В данной статье был рассмотрен общий поход по созданию приложений, требующих повышенных привилегий администратора для своего запуска. Методика основывается на на внедрении в ресурсы специально подготовленного манифеста и не претендует на уникальность или на прямое руководство к действию.