1。大家注意到没有,HKEY_USERS下有两个很长名字的项,而且他们名称对不同的用户/系统是不一样,那么我怎么才能访问到他们的子项内容呢(其他项里面也有类似的)?
2。写注册表的程序总会返回失败代码5(拒绝访问),而必需用“以管理员身份运行”才能正常执行,如何解决这个问题?

解决方案 »

  1.   

    1.遍历,RegEnumKey
    2.错误信息都提示你了,需要有管理员权限才能修改注册表,vista上有这个要求,你可以弹出UAC让用户提升
      

  2.   

    1.直接操作HKEY_CURRENT_USER或者HKEY_LOCAL_MACHINE
    2.Vista系统添加个manifest文件,标记程序需要管理员权限
      

  3.   

    1.但是对像HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\{8A662FB3-FB21-4012-A06F-043BA03663C6}中的{8A...}这样的用什么代替呢?
    2.manifest文件里怎么写呢?
      

  4.   

    第一题没看明白你的意思第二题:<?xml version="1.0" encoding="utf-8"?> 
    <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> 
      <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3"> 
        <security> 
          <requestedPrivileges> 
            <requestedExecutionLevel   level="requireAdministrator"   uiAccess="false" /> 
          </requestedPrivileges> 
        </security> 
      </trustInfo> 
    </assembly>
      

  5.   

    和其他的键一样读
    RegEnumKey  按照序号读
      

  6.   

    我的意思是写一个程序,它不会因为系统不同而不能正确的执行,用RegEnumKey将子项列出后我又不知道到底哪一才是我要的。哎,算了吧,我也越说越说不清楚……
    这样吧,我想写一个自动更改IP设置的程序,结果查了一下,说是在注册表里改就行了,于是找了注册表,结果发现
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\下有两个项(其中之一就是上面的{8A...},也就是我要的,而另一个是否存在或是什么并不重要),可是我换到另外一个系统下找了一下,也有两个,其中之一存放着IP信息,但这一个与上面提到的那一项并不是一样的即{8A...}这儿不一样。比较这四个项,也没有发现什么规律……