Если вы ориентируетесь на Windows Vista, и вашему приложению требуются права администратора (например, доступ к каталогу программных файлов), то произойдет сбой, если вы не включите манифест, чтобы Windows знала.К счастью, это очень просто.
Сначала добавьте файл манифеста в корень исполняемого проекта .NET - это можно сделать, выбрав «Добавить новый элемент» и выбрав «Файл манифеста приложения».Или просто создайте пустой файл с именем «app.manifest».Стандартный шаблон, который предоставляет вам Visual Studio, выглядит следующим образом:
<?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="asInvoker" uiAccess="false" />
</requestedPrivileges>
</security>
</trustInfo>
</asmv1:assembly>
Ключевой частью является режим запрашиваемого исполнения - уровень по умолчанию, для которого по умолчанию установлено значение «asInvoker».Это означает, что приложение будет работать под привилегиями того, кто его запускал, - помня, что в UAC даже администраторы Windows Vista работают как пользователи, пока они не повышают свои разрешения.
Если ваше приложение всегда требует привилегий администратора, тоВы можете изменить это значение на «requireAdministrator».Теперь, когда ваше приложение запускается, оно всегда вызывает UAC и просит пользователя разрешить администратору доступ к вашей программе.
Обратите внимание, что стоит серьезно подумать, действительно ли вам это нужно и почему - особенно с учетом навязчивости.опыт UAC.Например, вам не нужно записывать настройки в Program Files, поскольку Windows предоставляет для этого только область профиля пользователя и реестр.В целом UAC, как мы надеемся, должен заставить нас всех задуматься над тем, где мы храним данные и какие разрешения нужны приложению * .