如何实现这样一个功能:
现有一个注册表键值路径:
怎样才能实现自动打开注册表程序(regedit.exe),然后自动跳转到该路径?

解决方案 »

  1.   

    Option ExplicitPrivate Const HKEY_CLASSES_ROOT = &H80000000
    Private Const HKEY_LOCAL_MACHINE = &H80000002
    Private Const HKEY_USERS = &H80000003
    Private Const HKEY_CURRENT_USER = &H80000001Private Const ERROR_SUCCESS = 0&Private Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" ( _
        ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long'以你的为例子HKEY_LOCAL_MACHINE\SoftwarePrivate Sub Command1_Click()
        Dim i
        
        i = Shell("c:/winnt/regedit.exe")
        
        Dim hK As Long
        Dim lpSubKey As String
        
        lpSubKey = "SOFTWARE"  '子路径
        If RegOpenKey(HKEY_LOCAL_MACHINE, lpSubKey, hK) = ERROR_SUCCESS Then
            '...
        End IfEnd Sub基本原理如上,对于其他的路径,你自己想办法对应好RegOpenKey第一个参数即可
      

  2.   


    误解我的意思拉
    不是单纯的打开regedit,而是打开后,自动寻找到HKEY_LOCAL_MACHINE\Software路径,然后在Regedit中显示
      

  3.   

    Regedit 能接收外部消息吗?
      

  4.   

    Private Sub Command1_Click()
        Shell "regedit"
        AppActivate "注册表编辑器"
        SendKeys "{down}"
        SendKeys "{down}"
        SendKeys "{down}"
        SendKeys "{left}"
    End Sub
      

  5.   

    补充一点意见!
    regedit在打开时,总是展开其上次关闭时的主键,因此你要上用上面的方法需要先n次kendkeys "{up}"
    然后才有可能准确地定位。即然它可以记住上次关闭时的位置,那么理论上讲要是知道它记在哪里就好了,将要打开的路径替换它保存的路径就应该可以了,但它究竟保存在哪里了呢?
      

  6.   

    SHELL "REGEDIT.EXE"
    SENDKEYS "HKEY_LOCAL_MACHINE"
    SENDKEYS ({RIGHT})
    SENDKEYS "Software"
    SENDKEYS ({RIGHT})
      

  7.   

    其实有一个API可以按指定路径打开注册表的。不过记不住了。