使用app.manifest [ExecutionLevel]以管理员权限运行Visual Studio

时间:2010-06-07 06:39:40

标签: c# visual-studio-2005

我需要更改注册表中的密钥以限制用户使用任务管理器,因为它是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 个答案:

答案 0 :(得分:1)

代码需要提升权限才能访问注册表。但是,只有一段代码需要这些额外的权限。为了处理这种情况,使用了模拟,即您将仅以普通用户身份执行此应用程序,但该特定代码段将像管理员一样执行。

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