2009-11-23 7 views
5

С Vista & Windows 7 вышла, некоторые из моих приложений .NET начали бросать исключения безопасности.Запустить приложение .NET как администратор

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

Я знаю, что в качестве пользователя я могу настроить приложение на запуск как администратор, но это не достаточно хорошо, потому что если приложение будет работать без привилегий, оно будет разбиваться на мои пользователи.

Есть ли способ сказать окна (программно) Я хочу, чтобы приложение запускалось с правами администратора?

ответ

7

Необходимо отметить свое приложение как требующее привилегий администратора в манифесте приложения. Here's an article from MSDN Magazine, что объясняет процесс.

16

Создайте манифест приложения, установите requestedExecutionLevel в requireAdminstrator:

Пример (сгенерированный VS при добавлении приложений Manifest):

<?xml version="1.0" encoding="utf-8"?> 
<asmv1:assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/> 
    <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2"> 
    <security> 
     <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3"> 
     <!-- UAC Manifest Options 
      If you want to change the Windows User Account Control level replace the 
      requestedExecutionLevel node with one of the following. 

     <requestedExecutionLevel level="asInvoker" uiAccess="false" /> 
     <requestedExecutionLevel level="requireAdministrator" uiAccess="false" /> 
     <requestedExecutionLevel level="highestAvailable" uiAccess="false" /> 

      If you want to utilize File and Registry Virtualization for backward 
      compatibility then delete the requestedExecutionLevel node. 
     --> 
     <requestedExecutionLevel level="requireAdministrator" uiAccess="false" /> 
     </requestedPrivileges> 
    </security> 
    </trustInfo> 
</asmv1:assembly> 

Если добавить это в проект Visual Studio приложения, это будут встроены в вашу сборку при компиляции.

Смежные вопросы