我现在已经知道注册表何处存放“我的文档”文件夹的位置,如何把这个位置告诉程序,以便每次启动都用“ChDir”命令把当前用户的“我的文档”文件夹作为程序的当前文件夹……

解决方案 »

  1.   

    晕……我就是不会读取注册表嘛……呵呵最好给我一个 Basic 代码,有点说明最好……谢谢
      

  2.   

    Private Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, ByRef lpType As Long, ByRef lpData As Any, ByRef lpcbData As Long) As Long
    Private Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, ByRef phkResult As Long) As Long
    Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
    Private Const HKEY_LOCAL_MACHINE As Long = &H80000002'要定义的键
    '-------------------------------------------------------------------------------
    Private Sub Command1_Click()
    Dim hKey As Long, ret As Long, Name As String, Idx As Long
    Dim tempName As String
    Name = String(256, Chr(0))
    ret = RegOpenKey(HKEY_LOCAL_MACHINE, "SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\abcd", hKey)'路径
    ret = RegQueryValueEx(hKey, "path", 0, 1, ByVal Name, Len(Name))'读一个值
    RegCloseKey hKey
    MsgBox Name
    End Sub
    '根据你的路径就可以读出了
      

  3.   

    别人都贴了,我也贴吧
    Declare Function RegEnumValue Lib "advapi32.dll" Alias "RegEnumValueA" (ByVal hKey As Long, ByVal dwIndex As Long, ByVal lpValueName As String, lpcbValueName As Long, ByVal lpReserved As Long, lpType As Long, ByVal lpData As String, lpcbData As Long) As Long
    Declare Function RegOpenKeyEx Lib "advapi32" Alias "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, ByVal samDesired As Long, phkResult As Long) As Long
    Declare Function RegSetValueEx Lib "advapi32" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, ByVal szData As String, ByVal cbData As Long) As Long
    Declare Function RegCloseKey Lib "advapi32" (ByVal hKey As Long) As Long
    Declare Function RegCreateKeyEx Lib "advapi32" Alias "RegCreateKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal Reserved As Long, ByVal lpClass As String, ByVal dwOptions As Long, ByVal samDesired As Long, lpSecurityAttributes As SECURITY_ATTRIBUTES, phkResult As Long, lpdwDisposition As Long) As LongDeclare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As LongDeclare Function RegDeleteValue Lib "advapi32.dll" Alias "RegDeleteValueA" (ByVal hKey As Long, ByVal lpValueName As String) As Long    #If Win32 Then
            
            Public Const HKEY_CLASSES_ROOT = &H80000000
            Public Const HKEY_CURRENT_USER = &H80000001
            Public Const HKEY_LOCAL_MACHINE = &H80000002
            Public Const HKEY_USERS = &H80000003
            Public Const KEY_ALL_ACCESS = &H3F
            Public Const REG_OPTION_NON_VOLATILE = 0&
            Public Const REG_CREATED_NEW_KEY = &H1
            Public Const REG_OPENED_EXISTING_KEY = &H2
            Public Const ERROR_SUCCESS = 0&
            Public Const REG_SZ = (1)
        #End If
    Type SECURITY_ATTRIBUTES
        
        nLength As Long
        lpSecurityDescriptor As Long
        bInheritHandle As BooleanEnd TypePublic Const SREG = "SOFTWARE\Spyder-Net Productions\SpyderPF"Public Function bSetRegValue(ByVal hKey As Long, ByVal lpszSubKey As String, ByVal sSetValue As String, ByVal sValue As String) As Boolean
        
        On Error Resume Next
        Dim phkResult As Long
        Dim lResult As Long
        Dim SA As SECURITY_ATTRIBUTES
        Dim lCreate As Long
        RegCreateKeyEx hKey, lpszSubKey, 0, "", REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, SA, phkResult, lCreate
        lResult = RegSetValueEx(phkResult, sSetValue, 0, REG_SZ, sValue, CLng(Len(sValue) + 1))
        RegCloseKey phkResult
        bSetRegValue = (lResult = ERROR_SUCCESS)
        
    End Function
    Public Function bGetRegValue(ByVal hKey As Long, ByVal sKey As String, ByVal sSubKey As String) As String
        
        Dim lResult As Long
        Dim phkResult As Long
        Dim dWReserved As Long
        Dim szBuffer As String
        Dim lBuffSize As Long
        Dim szBuffer2 As String
        Dim lBuffSize2 As Long
        Dim lIndex As Long
        Dim lType As Long
        Dim sCompKey As String
        
        lIndex = 0
        lResult = RegOpenKeyEx(hKey, sKey, 0, 1, phkResult)
        Do While lResult = ERROR_SUCCESS And Not (bFound)
            szBuffer = Space(255)
            lBuffSize = Len(szBuffer)
            szBuffer2 = Space(255)
            lBuffSize2 = Len(szBuffer2)
            lResult = RegEnumValue(phkResult, lIndex, szBuffer, lBuffSize, dWReserved, lType, szBuffer2, lBuffSize2)
            If (lResult = ERROR_SUCCESS) Then
                sCompKey = Left(szBuffer, lBuffSize)
                If (sCompKey = sSubKey) Then
                    bGetRegValue = Left(szBuffer2, lBuffSize2 - 1)
                End If
            End If
            lIndex = lIndex + 1
            
        Loop
        RegCloseKey phkResult
    End FunctionPublic Function bIndexReg(ByVal hKey As Long, ByVal sKey As String, lstBox As ListBox, val As String) As String
        
        Dim lResult As Long
        Dim phkResult As Long
        Dim dWReserved As Long
        Dim szBuffer As String
        Dim lBuffSize As Long
        Dim szBuffer2 As String
        Dim lBuffSize2 As Long
        Dim lIndex As Long
        Dim lType As Long
        Dim sCompKey As String
        Dim i As Long
        Dim r_List
        
        lIndex = 0
        lResult = RegOpenKeyEx(hKey, sKey, 0, 1, phkResult)
        Do While lResult = ERROR_SUCCESS And Not (bFound)
            szBuffer = Space(255)
            lBuffSize = Len(szBuffer)
            szBuffer2 = Space(255)
            lBuffSize2 = Len(szBuffer2)
            lResult = RegEnumValue(phkResult, lIndex, szBuffer, lBuffSize, dWReserved, lType, szBuffer2, lBuffSize2)
            If (lResult = ERROR_SUCCESS) Then
                sCompKey = Left(szBuffer, lBuffSize)            If Left(szBuffer2, lBuffSize2 - 1) = val Then                lstBox.AddItem sCompKey
                
                End If        End If
            lIndex = lIndex + 1
            
        Loop
        RegCloseKey phkResult
    End FunctionFunction DelSetting(hKey As Long, strPath As String, strValue As String)
        Dim Ret
        'Create a new key
        RegCreateKey hKey, strPath, Ret
        'Delete the key's value
        RegDeleteValue Ret, strValue
        'close the key
        RegCloseKey Ret
    End Function
      

  4.   

    注册表目录:HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders,里边存放 Windows 系统文件夹的位置,例如我的电脑、图片收藏、音乐收藏……
      

  5.   

    Private Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, ByRef lpType As Long, ByRef lpData As Any, ByRef lpcbData As Long) As Long
    Private Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, ByRef phkResult As Long) As Long
    Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
    Private Const HKEY_CURRENT_USER As Long = &H80000001'-------------------------------------------------------------------------------
    Private Sub Command1_Click()
    Dim hKey As Long, ret As Long, Name As String, Idx As Long
    Dim tempName As String
    Name = String(256, Chr(0))
    ret = RegOpenKey(HKEY_CURRENT_USER, "Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders", hKey)
    ret = RegQueryValueEx(hKey, "Personal", 0, 1, ByVal Name, Len(Name))
    RegCloseKey hKey
    MsgBox Name
    End Sub
      

  6.   

    “午夜逛街”:你的程序运行到“HKEY_CURRENT_USER”时提示未声明变量????
      

  7.   

    Private Const HKEY_CURRENT_USER As Long = &H80000001'已经定义到窗口上了.就是我刚回你的那代码.