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

问题描述:

我需要更改注册表中的注册表项以限制用户使用任务管理器,因为它是Kiosk应用程序。我用于更改注册表的代码完美适用于管理员帐户。但我的应用程序将在普通用户帐户中运行。当我试图运行我在普通用户开户申请,我得到下面的错误:使用app.manifest运行具有管理员权限的Visual Studio [ExecutionLevel]

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> 

代码需要提升的权限来访问注册表。但是只有一部分代码需要额外的许可。为了处理这种情况,使用模拟,即,你将只以普通用户的身份执行这个应用程序,但是这个特定的代码将被执行,就像你是一个管理员一样。

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