IWshRuntimeLibrary是Windows Script Host(WSH)的类型库。可以用下列代码去读写注册表健。set WshShell = CreateObject ("WScript.Shell")WshShell.RegWrite "HKCU\Software\ACME\FortuneTeller\", 1, "REG_BINARY"
WshShell.RegWrite "HKCU\Software\ACME\FortuneTeller\MindReader", "Goocher!", "REG_SZ"bKey =    WshShell.RegRead ("HKCU\Software\ACME\FortuneTeller\")Msgbox (WshShell.RegRead ("HKCU\Software\ACME\FortuneTeller\MindReader"))WshShell.RegDelete "HKCU\Software\ACME\FortuneTeller\MindReader"
WshShell.RegDelete "HKCU\Software\ACME\FortuneTeller\"
WshShell.RegDelete "HKCU\Software\ACME\"

解决方案 »

  1.   

    呵呵,好吧,留下你的Email,我发个我写的DLL给你(有源代码的。:))
      

  2.   

    vb自带读写注册表的函数 
    GetSetting 函数 检索注册表设置值。 
    SaveSetting 语句 保存或创建注册表设置值。 
    GetAllSettings 函数 返回一个包含多项注册表设置值的数组。 
    DeleteSetting 语句 删除注册表设置值。 
    但是他只访问固定的注册表位置 
    ---HKEY_CURRENT_USER\Software\VB and VBA Program Settings\appname\section\key
      

  3.   

    Option ExplicitPublic Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, ByVal samDesired As Long, phkResult As Long) As LongPublic 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 LongPublic Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As LongPublic Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, lpData As Any, lpcbData As Long) As LongPublic 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'Public Declare Function RegDeleteKey Lib "advapi32.dll" Alias "RegDeleteKeyA" (ByVal hKey As Long, ByVal lpSubKey As String) As LongPublic Declare Function RegDeleteValue Lib "advapi32.dll" Alias "RegDeleteValueA" (ByVal hKey As Long, ByVal lpValueName As String) As LongPublic Const HKEY_CURRENT_USER = &H80000001Public Const REG_OPTION_NON_VOLATILE = 0Public Const REG_SZ = 1Public Const ERROR_SUCCESS = 0&Public Const KEY_ALL_ACCESS = &H3F
    Public Type SECURITY_ATTRIBUTES
            nLength As Long
            lpSecurityDescriptor As Long
            bInheritHandle As Long
    End Type
    Option Explicit
    '***********************************************************************************************
    '*   本程序为访问注册表的工具DLL,其不同于SAVESETTING等函数,它可以访问注册表中的SOFTWARE KEY,
    '*   在此主键下创建公司名KEY,软件KEY,然后在下设SECTION ,KEY。而不再将健值存放在 VB and VBA
    '*   Program Settings 中。
    '*   如果原来用的是 VB 的 SaveSetting 系列,则亦很容易转换:
    '*   将本程序编译,并引用本REGMASTR.DLL
    '*   用替换的方法对代码进行下列替换:
    '*   SaveSetting 替换为: SaveRegSetting
    '*   GetSetting 替换为: GetRegSetting
    '*   DeleteSetting 替换为: DeleteRegSetting
    '*   因而,本DLL为VB添加了三条语句和函数。
    '*   NOTE:编译前,请将公司名常量 sCompanyName 改为您的公司名
    '*        DeleteRegSetting 只可删除Key,若需删除SECTION,APPNAME,COMPANY,则需修改以下程序。
    '**********************************************************************************************Const sCompanyName = "Solou"
    Private mvarstrErr As String 'local copy'***************************************************************
    '---------------------------------------------------------------
    '***************************************************************
    '---------------------------------------------------------------'类名属性,返回当前类的名称,用于出错时指明是何处出错
    '保存这一属性值的本地变量
    Private Const mvarClsName As String = "CLSREG"'此属性只有Get即为只读属性,所以,请不要给这一属性赋值
    Public Property Get ClsName() As String
        ClsName = mvarClsName
    End Property
    Public Function SaveRegSetting(AppName As String, Section As String, Key As String, Optional Setting As Variant) As IntegerDim hSoftware As Long
    Dim lResult As Long
    Dim hCompany As Long
    Dim hAppName As Long
    Dim hSection As Long
    Dim SA As SECURITY_ATTRIBUTES
    Dim Create As Long
    Dim szBuffer As String
    Dim lBufsize As LongOn Error GoTo ErrHandle'在 HKEY_CURRENT_UAER 下打开 Software Key
    lResult = RegOpenKeyEx(HKEY_CURRENT_USER, "Software", 0, KEY_ALL_ACCESS, hSoftware)'在 SOFTWARE 下创建 COMPANYNAME KEY(若已存在,则打开它!)
    lResult = RegCreateKeyEx(hSoftware, sCompanyName, 0, "", REG_OPTION_NON_VOLATILE, _
                              KEY_ALL_ACCESS, SA, hCompany, Create)'在 CompanyName 下创建 AppName KEY(若已存在,则打开它!)
    lResult = RegCreateKeyEx(hCompany, AppName, 0, "", REG_OPTION_NON_VOLATILE, _
                              KEY_ALL_ACCESS, SA, hAppName, Create)'在 AppName 下创建 Section KEY(若已存在,则打开它!)
    lResult = RegCreateKeyEx(hAppName, Section, 0, "", REG_OPTION_NON_VOLATILE, _
                              KEY_ALL_ACCESS, SA, hSection, Create)'读取新的键值
    szBuffer = CStr(Setting)If Len(szBuffer) = 0 Then
        szBuffer = " "
    End IflBufsize = Len(szBuffer) + 1'保存新的健值
    lResult = RegSetValueEx(hSection, Key, 0, REG_SZ, ByVal szBuffer, lBufsize)
                              '关闭 Software 各键
    RegCloseKey hSection
    RegCloseKey hAppName
    RegCloseKey hCompany
    RegCloseKey hSoftware
    SaveRegSetting = -1Exit Function
    ErrHandle:WriteErrLog Me, "SaveRegSetting", 69, "注册表读写错误,错误号:" & CStr(Err)
    Err.Clear
    SaveRegSetting = 0
    End Function
    Public Function GetRegSetting(AppName As String, Section As String, Key As String, Optional Default As Variant) As VariantDim hSoftware As Long
    Dim lResult As Long
    Dim hCompany As Long
    Dim hAppName As Long
    Dim hSection As Long
    Dim SA As SECURITY_ATTRIBUTES
    Dim Create As Long
    Dim szBuffer As String
    Dim lBufsize As LongOn Error GoTo ErrHandle'在 HKEY_CURRENT_UAER 下打开 Software Key
    lResult = RegOpenKeyEx(HKEY_CURRENT_USER, "Software", 0, KEY_ALL_ACCESS, hSoftware)'在 SOFTWARE 下创建 COMPANYNAME KEY(若已存在,则打开它!)
    lResult = RegCreateKeyEx(hSoftware, sCompanyName, 0, "", REG_OPTION_NON_VOLATILE, _
                              KEY_ALL_ACCESS, SA, hCompany, Create)'在 CompanyName 下创建 AppName KEY(若已存在,则打开它!)
    lResult = RegCreateKeyEx(hCompany, AppName, 0, "", REG_OPTION_NON_VOLATILE, _
                              KEY_ALL_ACCESS, SA, hAppName, Create)'在 AppName 下创建 Section KEY(若已存在,则打开它!)
    lResult = RegCreateKeyEx(hAppName, Section, 0, "", REG_OPTION_NON_VOLATILE, _
                              KEY_ALL_ACCESS, SA, hSection, Create)'查找上次保存的键值字符串的长度
    lResult = RegQueryValueEx(hSection, Key, 0, REG_SZ, 0, lBufsize)'给定bufferszBuffer = Space(lBufsize + 1)'查找上次保存的键值
    lResult = RegQueryValueEx(hSection, Key, 0, REG_SZ, ByVal szBuffer, lBufsize)'如果lResult=2 则不存在上次保存
    If lResult = 2 Then
        '如果Default不为空
        If Len(Default) <> 0 Then
        szBuffer = CStr(Default)
        Else
        szBuffer = vbNullString
        End If
    Else
    szBuffer = Left$(szBuffer, lBufsize - 1)
    End If'关闭 Software 各键
    RegCloseKey hSection
    RegCloseKey hAppName
    RegCloseKey hCompany
    RegCloseKey hSoftware'函数返回值:GetRegSetting = szBufferExit Function
    ErrHandle:WriteErrLog Me, "GetRegSetting", 140, "注册表读写错误,错误号:" & CStr(Err)
    Err.Clear
    End FunctionPublic Function DeleteRegSetting(AppName As String, Section As String, Key As String) As Integer
    Dim hSoftware As Long
    Dim lResult As Long
    Dim hCompany As Long
    Dim hAppName As Long
    Dim hSection As Long
    Dim SA As SECURITY_ATTRIBUTES
    Dim Create As Long
    Dim szBuffer As String
    Dim lBufsize As LongOn Error GoTo ErrHandle'在 HKEY_CURRENT_UAER 下打开 Software Key
    lResult = RegOpenKeyEx(HKEY_CURRENT_USER, "Software", 0, KEY_ALL_ACCESS, hSoftware)'在 SOFTWARE 下打开 COMPANYNAME KEY
    lResult = RegCreateKeyEx(hSoftware, sCompanyName, 0, "", REG_OPTION_NON_VOLATILE, _
                              KEY_ALL_ACCESS, SA, hCompany, Create)
    If (lResult = ERROR_SUCCESS) Then
        '在 CompanyName 下打开 AppName KEY
        lResult = RegCreateKeyEx(hCompany, AppName, 0, "", REG_OPTION_NON_VOLATILE, _
                                  KEY_ALL_ACCESS, SA, hAppName, Create)    If (lResult = ERROR_SUCCESS) Then
            '在 AppName 下打开 Section KEY
            lResult = RegCreateKeyEx(hAppName, Section, 0, "", REG_OPTION_NON_VOLATILE, _
                                      KEY_ALL_ACCESS, SA, hSection, Create)          
              RegDeleteValue hSection, Key
        End If
        
    End If'关闭 Software 各键'如果要删除hSection,请用: RegDeleteKey hAppName, hSection'但需先确定hSection下无任何键值,否则,删除不掉!
    RegCloseKey hSection
    RegCloseKey hAppName
    RegCloseKey hCompany
    RegCloseKey hSoftwareDeleteRegSetting = -1Exit Function
    ErrHandle:WriteErrLog Me, "DeleteRegSetting", 198, "注册表读写错误,错误号:" & CStr(Err)
    Err.Clear
    DeleteRegSetting = 0End FunctionPublic Property Let StrErr(ByVal vData As String)
    'used when assigning a value to the property, on the left side of an assignment.
    'Syntax: X.strErr = 5
        mvarstrErr = vData
    End Property
    Public Property Get StrErr() As String
    'used when retrieving value of a property, on the right side of an assignment.
    'Syntax: Debug.Print X.strErr
        StrErr = mvarstrErr
    End Property
      

  4.   

    看看。请教请教请教请教请教请教请教请教请教请教请教
    请教
    请教如果得到当前WINDOWS所用桌面画的文件名和目录呢?