我需要更改注册表中的密钥以限制用户使用任务管理器,因为它是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>
答案 0 :(得分:1)
代码需要提升权限才能访问注册表。但是,只有一段代码需要这些额外的权限。为了处理这种情况,使用了模拟,即您将仅以普通用户身份执行此应用程序,但该特定代码段将像管理员一样执行。
http://msdn.microsoft.com/en-us/library/system.security.principal.windowsimpersonationcontext.aspx