Запустите Visual Studio с правами администратора, используя app.manifest [ExecutionLevel] - PullRequest
0 голосов
/ 07 июня 2010

Мне нужно изменить ключ в реестре, чтобы запретить пользователю использовать диспетчер задач, так как это приложение Kiosk. Мой код для изменения реестра отлично работает для учетной записи администратора. Но мое приложение будет запущено с учетной записью обычного пользователя. Когда я пытался запустить свое приложение с учетной записью обычного пользователя, я получаю следующую ошибку:

DisableTaskManagerSystem.UnauthorizedAccessException: 
Access to the registry key 'HKey_Current_User\Software\Mictrosoft\Windows\CurrentVersion\Policies\System' is denied.
at Microsoft.win32.RegistryKey.win32Error(int32 errorcode, String str)

Так что мне нужно запустить мое приложение со всеми правами администратора. Для чего я использую ниже app.manifest. Но кое-как я получаю ту же ошибку. Как это побороть?

Код в app.manifest:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <ms_asmv2:trustInfo xmlns:ms_asmv2="urn:schemas-microsoft- com:asm.v2">
    <ms_asmv2:security>
      <ms_asmv2:requestedPrivileges>
        <ms_asmv2:requestedExecutionLevel level="requireAdministrator" uiAccess="true">
        </ms_asmv2:requestedExecutionLevel>
      </ms_asmv2:requestedPrivileges>
    </ms_asmv2:security>
  </ms_asmv2:trustInfo>
</assembly>

1 Ответ

1 голос
/ 09 июня 2010

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

http://msdn.microsoft.com/en-us/library/system.security.principal.windowsimpersonationcontext.aspx

...