win7注册表,c# win7注册表【Registry】 操作

2009年的在上海参加了win7的产品兼容性问题活动。在win7系统注册表信息的操作就比较麻烦...不像xp系统那样简单,win7安全性比较高点。
所以,在操作win7注册表是必须要有管理员身份才能操作注册表信息,这样不会被UAC(用户帐户控制)阻止访问操作注册表信息。
这里讲一 C# 小列子(高手请绕过此地!), 我们平时都是在xp开发比较多...不过现在很多开发人员也在win7下开发了。
下面是在 LocalMachine下的 一下注册表操作 ,就不详说了 private static void DeleteRegistry(string name) { string[] aimnames; RegistryKey hkml = Registry.LocalMachine; RegistryKey software = hkml.OpenSubKey("SOFTWARE", true); RegistryKey aimdir = software.OpenSubKey("Microsoftss", true); aimnames = aimdir.GetSubKeyNames(); foreach (string aimKey in aimnames) { if (aimKey == name) aimdir.DeleteSubKeyTree(name); } } private static string GetData(string name) { string registData; RegistryKey hkml = Registry.LocalMachine; RegistryKey software = hkml.OpenSubKey("SOFTWARE", true); RegistryKey aimdir = software.OpenSubKey("Microsoftss", true); registData = aimdir.GetValue(name).ToString(); return registData; } private static void WriteValue(string name, string tovalue) { RegistryKey hklm = Registry.LocalMachine; RegistryKey software = hklm.OpenSubKey("SOFTWARE", true); RegistryKey aimdir = software.CreateSubKey("Microsoftss"); aimdir.SetValue(name, tovalue); } private static bool IsExit(string name) { bool _exit = false; string[] subkeyNames; RegistryKey hkml = Registry.LocalMachine; RegistryKey software = hkml.OpenSubKey("SOFTWARE", true); RegistryKey aimdir = software.OpenSubKey("Microsoftss", true); subkeyNames = aimdir.GetValueNames(); foreach (string keyName in subkeyNames) { if (keyName == name) { _exit = true; return _exit; } } return _exit; }

比如,当我们在xp系统下 软件执行Writevalue("版本号","v1.0.0.1"),一切都ok! 然后乐的就抛给了客户...没有思考。
一天客户换了win7系统 ,运了软件了。客户拉着42号鞋子的脸说,怎么软件在win7不能运行了....。问题就是上面开头说的了。
解决方法是有地....
这里列举几种.
第一种、教教客户、或者技术服务人员就好了。这个方法不需要修改我们的代码这是好处之一。只要, 点击.exe 右键
,在弹出的菜单中选择【属性】, 选择【兼容性】项,并勾选【以管理员身份运行此程序】就ok了。简单吧
第二种、也算简单,不过我们就要重新生成软件了。首先、在程序中加入MANIFEST资源,右击工程在菜单->【属性】->【安全性】,在界面中勾选【启用ClickOnce安全设置】,在项目的Properties下就有自动生成app.manifest文件。
文件内容如下:


的 asInvoker 改为"requireAdministrator"。重新编译一下就ok了。
看到这个了吧!
这就是UAC(用户帐户控制)了

还有其他的方法。不过上面两种比较简单...。
Tags:  win7注册表

延伸阅读

最新评论

发表评论