RegCreateKeyEx VB声明 
Declare Function RegCreateKeyEx Lib "advapi32.dll" 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 Long 
说明 
在指定项下创建新项的更复杂的方式。在Win32环境中建议使用这个函数。如指定的项已经存在,则函数会打开现有的项 
返回值 
Long,零(ERROR_SUCCESS)表示成功。其他任何值都代表一个错误代码 
参数表 
参数 类型及说明 
hKey Long,一个打开项的句柄,或者一个标准项名 
lpSubKey String,欲创建的新子项的名字 
Reserved Long,设为零 
lpClass String,项的类名 
dwOptions Long,下述常数为零:REG_OPTION_VOLATILE——这个项不正式保存下来,系统重新启动后会消失 
samDesired Long,带有前缀KEY_??的一个或多个常数。它们组合起来描述了允许对这个项进行哪些操作 
lpSecurityAttributes SECURITY_ATTRIBUTES,对这个项的安全特性进行描述的一个结构(用ByVal As Long传递空值)。不适用于windows 95 
phkResult Long,指定用于装载新子项句柄的一个变量 
lpdwDisposition Long,用于装载下列某个常数的一个变量:
REG_CREATED_NEW_KEY——新建的一个子项
REG_OPENED_EXISTING_KEY——打开一个现有的项  
注解 
REG_OPTION_VOLATILE不适用于windows 95
 
RegSetValueEx VB声明 
Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As Long 
说明 
设置指定项的值 
返回值 
Long,零(ERROR_SUCCESS)表示成功。其他任何值都代表一个错误代码 
参数表 
参数 类型及说明 
hKey Long,一个已打开项的句柄,或指定一个标准项名 
lpValueName String,要设置值的名字 
Reserved Long,未用,设为零 
dwType Long,要设置的数量类型 
lpData Any,包含数据的缓冲区中的第一个字节 
cbData Long,lpData缓冲区的长度 RegCloseKey VB声明 
Declare Function RegCloseKey Lib "advapi32.dll" Alias "RegCloseKey" (ByVal hKey As Long) As Long 
说明 
关闭系统注册表中的一个项(或键) 
返回值 
Long,零(ERROR_SUCCESS)表示成功。其他任何值都代表一个错误代码 
参数表 
参数 类型及说明 
hKey Long,要关闭的项 RegDeleteKey VB声明 
Declare Function RegDeleteKey Lib "advapi32.dll" Alias "RegDeleteKeyA" (ByVal hKey As Long, ByVal lpSubKey As String) As Long 
说明 
删除现有项下方一个指定的子项 
返回值 
Long,零(ERROR_SUCCESS)表示成功。其他任何值都代表一个错误代码 
参数表 
参数 类型及说明 
hKey Long,一个已打开项的句柄,或者标准项名之一 
lpSubKey String,要删除项的名字。这个项的所有子项也会删除 RegDeleteValue VB声明 
Declare Function RegDeleteValue Lib "advapi32.dll" Alias "RegDeleteValueA" (ByVal hKey As Long, ByVal lpValueName As String) As Long 
说明 
删除指定项下方的一个值 
返回值 
Long,零(ERROR_SUCCESS)表示成功。其他任何值都代表一个错误代码 
参数表 
参数 类型及说明 
hKey Long,一个已打开项的句柄,或标准项名之一 
lpValueName String,要删除的值名。可设为vbNullString或一个空串,表示删除那个项的默认值 上面这几个API可以实现你的要求!!!
下面这个函数可以实现程序的自启动!!Sub Auto_Start(YesorNO As Boolean)
  Dim phkResult As Long 
  Dim Iresult As Long
  Dim ICreate As Long
  Dim SA As SECURITY_ATTRIBUTES
  Dim Path_str As String
  Dim Pro_name As String  Path_str = App.Path + "\" + App.EXEName + ".exe"
  Pro_name = "Software\Microsoft\Windows\CurrentVersion\Run"
  
  Iresult = RegCreateKeyEx(HKEY_LOCAL_MACHINE, Pro_name, 0, "", _
         REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, SA, phkResult, ICreate)
  If YesorNO Then 
    Iresult = RegSetValueEx(phkResult, "和尚", 0, REG_SZ, ByVal Path_str, _
         CLng(Len(Path_str) + 1))
  Else  
    Iresult = RegDeleteValue(phkResult, "6232405")
  End If
  RegCloseKey phkResult
End Sub

解决方案 »

  1.   

    在泰山(dbcontrols)强烈要求删除的贴子
    http://www.csdn.net/expert/topic/460/460324.shtm
    中有一个可参考的代码!
      

  2.   

    http://www.csdn.net/Expert/topic/453/453373.shtm
      

  3.   

    "C:\Program Files\Microsoft Visual Studio\VB98\Template\Code\注册表访问.bas"
    自己微机里有啊.
      

  4.   

    ' 这个模块用于读和写注册表关键字。
    ' 不同于VB 的内部注册表访问方法,它可以
    ' 通过字符串的值来读和写任何注册表关键字。
    '---------------------------------------------------------------
    '-注册表 API 声明...
    '---------------------------------------------------------------
    Private Declare Function RegCloseKey Lib "advapi32" (ByVal hKey As Long) As Long
    Private 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, ByRef lpSecurityAttributes As SECURITY_ATTRIBUTES, ByRef phkResult As Long, ByRef lpdwDisposition As Long) As Long
    Private Declare Function RegOpenKeyEx Lib "advapi32" Alias "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, ByVal samDesired As Long, ByRef phkResult As Long) As Long
    Private Declare Function RegQueryValueEx Lib "advapi32" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, ByRef lpType As Long, ByVal lpData As String, ByRef lpcbData As Long) As Long
    Private Declare Function RegSetValueEx Lib "advapi32" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, ByVal lpData As String, ByVal cbData As Long) As Long
    Private Declare Function RegDeleteKey Lib "advapi32.dll" Alias "RegDeleteKeyA" (ByVal hKey As Long, ByVal lpSubKey As String) As Long
    Private Declare Function RegDeleteValue Lib "advapi32.dll" Alias "RegDeleteValueA" (ByVal hKey As Long, ByVal lpValueName As String) As Long'---------------------------------------------------------------
    '- 注册表 Api 常数...
    '---------------------------------------------------------------
    ' Reg Data Types...
    Const REG_SZ = 1                         ' Unicode空终结字符串
    Const REG_EXPAND_SZ = 2                  ' Unicode空终结字符串
    Const REG_DWORD = 4                      ' 32-bit 数字' 注册表创建类型值...
    Const REG_OPTION_NON_VOLATILE = 0       ' 当系统重新启动时,关键字被保留' 注册表关键字安全选项...
    Const READ_CONTROL = &H20000
    Const KEY_QUERY_VALUE = &H1
    Const KEY_SET_VALUE = &H2
    Const KEY_CREATE_SUB_KEY = &H4
    Const KEY_ENUMERATE_SUB_KEYS = &H8
    Const KEY_NOTIFY = &H10
    Const KEY_CREATE_LINK = &H20
    Const KEY_READ = KEY_QUERY_VALUE + KEY_ENUMERATE_SUB_KEYS + KEY_NOTIFY + READ_CONTROL
    Const KEY_WRITE = KEY_SET_VALUE + KEY_CREATE_SUB_KEY + READ_CONTROL
    Const KEY_EXECUTE = KEY_READ
    Const KEY_ALL_ACCESS = KEY_QUERY_VALUE + KEY_SET_VALUE + _
                           KEY_CREATE_SUB_KEY + KEY_ENUMERATE_SUB_KEYS + _
                           KEY_NOTIFY + KEY_CREATE_LINK + READ_CONTROL
                         
    ' 注册表关键字根类型...
    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 HKEY_PERFORMANCE_DATA = &H80000004' 返回值...
    Public Const ERROR_NONE = 0
    Public Const ERROR_BADKEY = 2
    Public Const ERROR_ACCESS_DENIED = 8
    Public Const ERROR_SUCCESS = 0'---------------------------------------------------------------
    '- 注册表安全属性类型...
    '---------------------------------------------------------------
    Private Type SECURITY_ATTRIBUTES
        nLength As Long
        lpSecurityDescriptor As Long
        bInheritHandle As Boolean
    End Type'ICON
    Public Const RT_BITMAP = 2&
    Public Const RT_ICON = 3&
    Public Const RT_CURSOR = 1&
    Private Type GUID
        Data1 As Long
        Data2 As Integer
        Data3 As Integer
        Data4(7) As Byte
    End TypePrivate Type PicBmp
        Size As Long
        Type As Long
        hBmp As Long
        hPal As Long
        Reserved As Long
    End Type
    '-------------------------------------------------------------------------------------------------
    'sample usage - Debug.Print UpodateKey(HKEY_CLASSES_ROOT, "keyname", "newvalue")
    '-------------------------------------------------------------------------------------------------
    Public Function UpdateKey(KeyRoot As Long, KeyName As String, SubKeyName As String, SubKeyValue As String) As Boolean
        Dim rc As Long                                      ' 返回代码
        Dim hKey As Long                                    ' 处理一个注册表关键字
        Dim hDepth As Long                                  '
        Dim lpAttr As SECURITY_ATTRIBUTES                   ' 注册表安全类型
        
        lpAttr.nLength = 50                                 ' 设置安全属性为缺省值...
        lpAttr.lpSecurityDescriptor = 0                     ' ...
        lpAttr.bInheritHandle = True                        ' ...    '------------------------------------------------------------
        '- 创建/打开注册表关键字...
        '------------------------------------------------------------
        rc = RegCreateKeyEx(KeyRoot, KeyName, _
                            0, REG_SZ, _
                            REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, lpAttr, _
                            hKey, hDepth)                   ' 创建/打开//KeyRoot//KeyName
        
        If (rc <> ERROR_SUCCESS) Then GoTo CreateKeyError   ' 错误处理...
        
        '------------------------------------------------------------
        '- 创建/修改关键字值...
        '------------------------------------------------------------
        If (SubKeyValue = "") Then SubKeyValue = " "        ' 要让RegSetValueEx() 工作需要输入一个空格...
        
        ' 创建/修改关键字值
        rc = RegSetValueEx(hKey, SubKeyName, _
                           0, REG_SZ, _
                           SubKeyValue, LenB(StrConv(SubKeyValue, vbFromUnicode)))
                           
        If (rc <> ERROR_SUCCESS) Then GoTo CreateKeyError   ' 错误处理
        '------------------------------------------------------------
        '- 关闭注册表关键字...
        '------------------------------------------------------------
        rc = RegCloseKey(hKey)                              ' 关闭关键字
        
        UpdateKey = True                                    ' 返回成功
        Exit Function                                       ' 退出
    CreateKeyError:
        UpdateKey = False                                   ' 设置错误返回代码
        rc = RegCloseKey(hKey)                              ' 试图关闭关键字
    End Function'-------------------------------------------------------------------------------------------------
    'sample usage - Debug.Print GetKeyValue(HKEY_CLASSES_ROOT, "COMCTL.ListviewCtrl.1\CLSID", "")
    '-------------------------------------------------------------------------------------------------
    Public Function GetKeyValue(KeyRoot As Long, KeyName As String, SubKeyRef As String) As String
        Dim i As Long                                           ' 循环计数器
        Dim rc As Long                                          ' 返回代码
        Dim hKey As Long                                        ' 处理打开的注册表关键字
        Dim hDepth As Long                                      '
        Dim sKeyVal As String
        Dim lKeyValType As Long                                 ' 注册表关键字数据类型
        Dim tmpVal As String                                    ' 注册表关键字的临时存储器
        Dim KeyValSize As Long                                  ' 注册表关键字变量尺寸
        
        ' 在 KeyRoot {HKEY_LOCAL_MACHINE...} 下打开注册表关键字
        '------------------------------------------------------------
        rc = RegOpenKeyEx(KeyRoot, KeyName, 0, KEY_ALL_ACCESS, hKey) ' 打开注册表关键字
        
        If (rc <> ERROR_SUCCESS) Then GoTo GetKeyError          ' 处理错误...
        
        tmpVal = String$(1024, 0)                             ' 分配变量空间
        KeyValSize = 1024                                       ' 标记变量尺寸
        
        '------------------------------------------------------------
        ' 检索注册表关键字的值...
        '------------------------------------------------------------
        rc = RegQueryValueEx(hKey, SubKeyRef, 0, _
                             lKeyValType, tmpVal, KeyValSize)    ' 获得/创建关键字的值
                            
        If (rc <> ERROR_SUCCESS) Then GoTo GetKeyError          ' 错误处理
          
        tmpVal = Left$(tmpVal, InStr(tmpVal, Chr(0)) - 1)    '------------------------------------------------------------
        ' 决定关键字值的转换类型...
        '------------------------------------------------------------
        Select Case lKeyValType                                  ' 搜索数据类型...
        Case REG_SZ, REG_EXPAND_SZ                              ' 字符串注册表关键字数据类型
            sKeyVal = tmpVal                                     ' 复制字符串的值
        Case REG_DWORD                                          ' 四字节注册表关键字数据类型
            For i = Len(tmpVal) To 1 Step -1                    ' 转换每一位
                sKeyVal = sKeyVal + Hex(Asc(Mid(tmpVal, i, 1)))   ' 一个字符一个字符地生成值。
            Next
            sKeyVal = Format$("&h" + sKeyVal)                     ' 转换四字节为字符串
        End Select
        
        GetKeyValue = sKeyVal                                   ' 返回值
        rc = RegCloseKey(hKey)                                  ' 关闭注册表关键字
        Exit Function                                           ' 退出
        
    GetKeyError:    ' 错误发生过后进行清除...
        GetKeyValue = vbNullString                              ' 设置返回值为空字符串
        rc = RegCloseKey(hKey)                                  ' 关闭注册表关键字
    End Function
    Public Function DeleteKey(KeyRoot As Long, KeyName As String) As Boolean
        Dim i As Long                                           ' 循环计数器
        Dim rc As Long                                          ' 返回代码
        Dim hKey As Long                                        ' 处理打开的注册表关键字
        Dim hDepth As Long                                      '
        Dim sKeyVal As String
        Dim lKeyValType As Long                                 ' 注册表关键字数据类型
        Dim tmpVal As String                                    ' 注册表关键字的临时存储器
        Dim KeyValSize As Long                                  ' 注册表关键字变量尺寸
        
        ' 在 KeyRoot {HKEY_LOCAL_MACHINE...} 下打开注册表关键字
        '------------------------------------------------------------
        rc = RegOpenKeyEx(KeyRoot, KeyName, 0, KEY_ALL_ACCESS, hKey) ' 打开注册表关键字
        
        If (rc <> ERROR_SUCCESS) Then GoTo GetKeyError          ' 处理错误...
        
        tmpVal = String$(1024, 0)                             ' 分配变量空间
        KeyValSize = 1024                                       ' 标记变量尺寸
        
        '------------------------------------------------------------
        ' 删除注册表关键字...
        '------------------------------------------------------------
        rc = RegDeleteKey(hKey, "")
                            
        If (rc <> ERROR_SUCCESS) Then GoTo GetKeyError          ' 错误处理
          
        DeleteKey = True                                        ' 返回值
        rc = RegCloseKey(hKey)                                  ' 关闭注册表关键字
        Exit Function                                           ' 退出
        
    GetKeyError:    ' 错误发生过后进行清除...
        DeleteKey = False
        rc = RegCloseKey(hKey)                                  ' 关闭注册表关键字End Function
      

  5.   

    http://www.sqreg.com/file/vb/reg_01.htm
    http://www.sqreg.com/file/vb/reg_02.htm
    http://www.sqreg.com/file/vb/reg_03.htm
    http://www.sqreg.com/file/vb/reg_04.htm
    http://www.sqreg.com/file/vb/reg_05.htm
    http://www.sqreg.com/file/vb/reg_06.htm
    http://www.sqreg.com/file/vb/reg_07.htm