none
关于Registrykey的问题~访问指定位置失败,请高手解答 RRS feed

  • 问题

  • 因为有人中病毒了,注册表被修改了

    所以我就想写个小程序来修改注册表,没想到遇到了问题

    using (RegistryKey rk = Registry.Users.CreateSubKey(@"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\Hidden\NOHIDDEN"))
                {
                    rk.SetValue("CheckedValue",2,RegistryValueKind .DWord );
                }

    那个路径 是不是不能随便访问啊?是不是用到下边的重载啊?

    RegistryKey.CreateSubKey (String, RegistryKeyPermissionCheck, RegistrySecurity)

     

    public RegistryKey CreateSubKey (
    string subkey,
    RegistryKeyPermissionCheck permissionCheck,
    RegistrySecurity registrySecurity
    )

    前边两个参数很简单,但最后一个参数 RegistrySecurity 就不容易了啊

    有高手能牺牲点时间给解答一下吗?

    给修改一下,让我能访问那个位置

    2008年6月4日 15:33

答案

  •      从你的写法来看, 你应该是想访问 HKEY_LOCAL_MACHINE 下面的内容, 但是你却用了 Registry.Users,

    这个是 HKEY_USERS 键.

     

        所以这样写就可以了:

    Code Snippet
                using (RegistryKey rk = Registry.LocalMachine.CreateSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\Hidden\NOHIDDEN")) {
                    rk.SetValue("CheckedValue", 2, RegistryValueKind.DWord);
                }

     

     

     

     

    2008年6月5日 11:58

全部回复

  •  

    RegistryKeyPermissionCheck.ReadSubTree

     

    http://msdn.microsoft.com/zh-cn/library/microsoft.win32.registrykeypermissioncheck(VS.80).aspx

     

    如果当前用户有管理员权限,是可以访问和修改的。

    你可以参考msdn的例子,每个方法都有代码可供参考的

    2008年6月5日 0:05
    版主
  •  

    你权限对吗?
    2008年6月5日 2:16
  •  

    我用自己的电脑测试的时候就失败了

    所以要是指用户权限的话我的权限没有问题

    要是指程序本身的权限的话,我就搞不清楚了

    记的曾经看到的关机程序的源代码里边 程序本身需要权限,这个是不是也需要呢?

    我会仔细看MSDN的,大家是不是都没有访问过那个位置啊?

    谢谢大家关注我的问题

    2008年6月5日 11:26
  •      从你的写法来看, 你应该是想访问 HKEY_LOCAL_MACHINE 下面的内容, 但是你却用了 Registry.Users,

    这个是 HKEY_USERS 键.

     

        所以这样写就可以了:

    Code Snippet
                using (RegistryKey rk = Registry.LocalMachine.CreateSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\Hidden\NOHIDDEN")) {
                    rk.SetValue("CheckedValue", 2, RegistryValueKind.DWord);
                }

     

     

     

     

    2008年6月5日 11:58
  • 首先惊讶于你的细心,呵呵,我提问的时候误导了大家,真抱歉,我水平低的问题

    谢谢 优哉@游哉 我刚测试了一下 很成功,原来我用的糊里糊涂的 呵呵 以后我会细心的

    再次感谢

    2008年6月10日 13:02