在Win7中,系统安全系数已经很高了,因此.NET4.0中对于注册表操作这种高级权限的东西也限制的比较紧,因此,在编程中经常会发现,使用RegistryKey类进行操作时的各种失效或者各种报错。
如何解决这问题呢?
首先,因为要操作注册表,所以,需要程序以管理员身份运行。在Win7系统中的表现即为运行程序时,弹出用户帐户控制对话框,申请以管理员身份运行。
在项目中新建一个后缀为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/XMLS

在Windows 7及更高版本中,由于安全性的提升,C#进行注册表操作时可能会遇到权限不足的问题。为解决此问题,程序需以管理员身份运行。可以通过添加应用程序清单文件(manifest)并设置相应权限来实现。然而,即使这样,当尝试写入或删除注册表时,使用RegistryKey.OpenSubKey()的一参数版本仍可能失败。正确做法是使用带两个参数的重载方法,并设置第二个参数为true,以允许写操作。

924

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



