在Win7下编程时可能有这样的情况,代码没有问题,但是执行时却会出现异常,如:System.Security.SecurityException: 不允许所请求的注册表访问权。只有以管理员身份运行时才能够正常运行。
这是Win7下UCA在起作用了。那好在VS的安装目录下有这么一个文件,它叫app.manifest.
我们可以看一下security下的内容。
<requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
<!-- UAC 清单选项
如果要更改 Windows 用户帐户控制级别,请用以下节点之一替换
requestedExecutionLevel 节点。
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
<requestedExecutionLevel level="highestAvailable" uiAccess="false" />
指定 requestedExecutionLevel 节点将会禁用文件和注册表虚拟化。
如果要利用文件和注册表虚拟化实现向后
兼容性,则删除 requestedExecutionLevel 节点。
-->
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
</requestedPrivileges>
就是说我们有三种用户控制级别,第三种不知道是做什么的,但是默认是第一种,改成第二种就可以解决以上问题了,相信就是管理员权限了。
第三种可能会更高,是不是在做驱动程序时会用到呢(猜想的)
本文探讨了Win7系统中由于用户账户控制(UAC)导致的应用执行异常,具体为System.Security.SecurityException错误。通过分析VS安装目录下的app.manifest文件,发现其在默认设置下并未赋予足够的权限。文章解释了manifest文件中security部分的配置,并提出将权限等级更改为requireAdministrator可以解决此问题。此外,还讨论了不同用户控制级别的含义及其适用场景。

4万+

被折叠的 条评论
为什么被折叠?



