不允许请求的注册表访问

问题描述 投票:42回答:7

我正在编写一个调整实用程序来修改HKEY_CLASSES_ROOT下的一些键。

所有在Windows XP等下工作正常。但是我在Windows 7下遇到错误Requested registry access is not allowed.Vista和2008我也是。

我应该如何修改我的代码以添加UAC支持?

c# .net security uac registry
7个回答
56
投票

app.manifest应该是这样的:

<?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">
            <requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
         </requestedPrivileges>
      </security>
   </trustInfo>
</asmv1:assembly>

17
投票

如果您不需要整个应用程序的admin privs,或者只需要进行一些不频繁的更改,您可以在新进程中执行更改并使用以下命令启动它:

Process.StartInfo.UseShellExecute = true;
Process.StartInfo.Verb = "runas";

这将以管理员的身份运行该过程,以便使用注册表执行任何操作,但使用正常的权限返回到您的应用程序。这样,每次启动时都不会提示用户使用UAC对话框。


17
投票

除非您拥有管理权限,否则您无法在Vista和更新版本的Windows中写入HKCR(或HKLM)配置单元。因此,您需要在运行实用程序之前以管理员身份登录,为其提供一个清单,说明它需要管理员级别(这将提示用户输入管理员登录信息),或者退出更改非 - 管理员不应该玩。 :-)


5
投票

作为临时修复,用户可以右键单击该实用程序并选择“以管理员身份运行”。


2
投票

我正在尝试使用verb = "runas",但在尝试更新注册表值时仍然遇到UnauthorizedAccessException。原来这是因为没有打开可写设置为true的子键。

Registry.OpenSubKey("KeyName", true);

Cannot write to Registry Key, getting UnauthorizedAccessException


1
投票

此问题与向运行应用程序的用户帐户授予必要的授权有关。要阅读类似的情况和针对正确解决方案的详细响应,如Microsoft所述,请随时访问此帖子:http://rambletech.wordpress.com/2011/10/17/requested-registry-access-is-not-allowed/


0
投票

你可以像abatishchev一样但没有UAC

<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
<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">
    </requestedPrivileges>
    </security>
  </trustInfo>
</assembly>
© www.soinside.com 2019 - 2024. All rights reserved.