怎样用vb提取硬件信息,并写入注册表?

解决方案 »

  1.   

    这个估计要参考api.
    访问注册表函数有:
    RegOpenKeyEx  打开一个现有的项
    GetSetting 函数 检索注册表设置值。 
    SaveSetting 语句 保存或创建注册表设置值。 
    GetAllSettings 函数 返回一个包含多项注册表设置值的数组。 
    DeleteSetting 语句 删除注册表设置值 
      

  2.   

    '取磁盘序列号
    '调用API函数 GetVolumeInformation。
    API声明:Declare Function GetVolumeInformation Lib "kernel32" _
      Alias "GetVolumeInformationA" _
      (ByVal lpRootPathName As String, _
      ByVal lpVolumeNameBuffer As String, _
      ByVal nVolumeNameSize As Long, _
      lpVolumeSerialNumber As Long, _
      lpMaximumComponentLength As Long, _
      lpFileSystemFlags As Long, _
      ByVal lpFileSystemNameBuffer As String, _
      ByVal nFileSystemNameSize As Long) As Long'程序:Private Sub Form_Load()
      Dim sDriveLetter As String 
      Dim RetVal As Long 
      Dim lpName As String 
      Dim nSize As Long 
      Dim nSerial As Long 
      Dim lpMaxComp As Long 
      Dim nFileFlags As Long 
      Dim lpFileName As String 
      lpName = Space(255)
      lpFileName = Space(255)
      nSize = 255  sDriveLetter = "a:\" ’这里你可以指定任何盘号  RetVal = GetVolumeInformation(sDriveLetter, lpName, _
       nSize, nSerial, lpMaxComp, nFileFlags, lpFileName, nSize)
      '你可以看出,不仅能得到序列号,还可以得到其他很多信息  If RetVal = 0 Then 
        '这里是你的错误处理代码
        Exit Sub 'Quit the subroutine
      Else 
        lblDriveSerial.Caption = CStr(nSerial) 
        '假定你已经建立了这个标签,将在标签上显示序列号.
      End If
    End Sub 怎样注册,搜索一下,一大堆。
      

  3.   

    写注册表的
    Private strMSubKeyValue As String                     '注册表键值
    Private strMSubKeyName As String                      '注册表键名
    Private strMKeyName As String                         '路径
    'API函数的声明
    '--------------------------------------------------------------------------------
    '关闭登录关键字
    '参数:        hKey                     -要释放的注册表键句柄
    '-----------------------------------------------------------------------------------
    Private Declare Function RegCloseKey Lib "advapi32" (ByVal hKey As Long) As Long
    '----------------------------------------------------------------------------------
    '打开注册表项
    '参数:      hKey                     -指向一个已经打开的键句柄,或默认的Handle
    '            lpSubKey                 -要打开键句柄值的项目名称,可设置为vbNullString的空字符串,表示清除值
    '            ulOptions                -注册表键句柄的参数
    '            samDesired               -指定要对注册表进行操作
    '            phkResult                -存储打开注册表键句柄的Handle
    '-----------------------------------------------------------------------------------
    Private 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 Long                                                                        
     '----------------------------------------------------------------------------------
     '创建注册表主键
     '参数:        hKey                 -要创建句柄的文件夹
     '              lpSubKey             -要创建的子文件夹
     '              phkResult            -指定要创建键句柄值
     '----------------------------------------------------------------------------------
     Private Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey As Long, _
                                                                                 ByVal lpSubKey As String, _
                                                                                 ByVal phkResult As Long) _
                                                                                 As Long
      '---------------------------------------------------------------------------------
      '创建注册表键,若存在就打开
      '参数:         hKey                            -要打开或创建句柄的文件夹
      '               strLpSubKey                     -要创建的子文件夹
      '               Reserved                        -保留的参数必须指定为“0”
      '               strLpClass                      -子文件夹里的项目名称
      '               dwOptions                       -注册表键句柄的参数
      '               samDesired                      -指定要注册表进行的操作
      '               lpSecurityAttributes            -指向一个继承自子程序返回handle的SECURITY_ATTRIBUTES结构
      '               phkResult                       -指定要创建的键句柄值
      '               lpdwDisposition                 -创建或打开一个键句柄
      Private Declare Function RegCreateKeyEx Lib "advapi32" Alias "RegCreateKeyExA" (ByVal hKey As Long, _
                                                                                      ByVal strLpSubKey As String, _
                                                                                      ByVal Reserved As Long, _
                                                                                      ByVal strLpClass 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                    
      

  4.   

    '----------------------------------------------------------------------------------
    '返回关键字的类型和值(类型为SZ)
    '参数:            hKey                          -指向一个打开的键句柄
    '                  strLpValueName                -要获取句柄值的名称
    '                  lpReserved                    -保留参数,必须为“0”
    '                  lpType                        -键句柄数据类型
    '                  strLpData                     -记录键句柄值的缓冲区
    '                  lpcbData                      -用于存储lpData实际长度的缓冲区(包含空白字符 )
    Private Declare Function RegQueryValueEx_SZ Lib "advapi32" Alias "RegQueryValueExA" (ByVal hKey As Long, _
                                                                                         ByVal strLpValueName As String, _
                                                                                         ByVal lpReserved As Long, _
                                                                                         ByRef lpType As Long, _
                                                                                         ByVal strLpData As String, _
                                                                                         ByRef lpcbData As Long) As Long                       
    '-----------------------------------------------------------------------------------
    '返回关键字的类型和值:类型为:DWORD
    '参数:            hKey                          -指向一个打开的键句柄
    '                  strLpValueName                -要获取句柄值的名称
    '                  lpReserved                    -保留参数,必须为“0”
    '                  lpType                        -键句柄数据类型
    '                  strLpData                     -记录键句柄值的缓冲区
    '                  lpcbData                      -用于存储lpData实际长度的缓冲区(包含空白字符 )
    Private Declare Function RegQueryValueEx_DWORD Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hKey As Long, _
                                                                                                ByVal strLpValueName As String, _
                                                                                                ByVal lpReserved As Long, _
                                                                                                lpType As Long, _
                                                                                                lpData As Long, _
                                                                                                lpcbData As Long) As Long
    ,----------------------------------------------------------------------------
    '返回关键字的类型和值:
    '参数:            hKey                          -指向一个打开的键句柄
    '                  strLpValueName                -要获取句柄值的名称
    '                  lpReserved                    -保留参数,必须为“0”
    '                  lpType                        -键句柄数据类型
    '                  strLpData                     -记录键句柄值的缓冲区
    '                  lpcbData                      -用于存储lpData实际长度的缓冲区(包含空白字符 )
    Private Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hKey As Long, _
                                                                                          ByVal strLpValueName As String, _
                                                                                          ByVal lpReserved As Long, _
                                                                                          lpType As Long, _
                                                                                          lpData As Any, _
                                                                                          ByRef lpcbData As Long) As Long
    '------------------------------------------------------------------------------
    '将文本字符串与指定关键字关联---设置注册表数据SZ型
    '参数:             hKey                        -指定一个打开的键句柄
    '                   strLpValueName              -要设置键句柄值的名称
    '                   Reserved                    -保留参数必须为“0”
    '                   dwType                      -键句柄数据类型
    '                   strlpData                   -记录键句柄值的缓冲区
    '                   cbData                      -用于存储strlpData实际长度
    Private Declare Function RegSetValueEx_SZ Lib "advapi32" Alias "RegSetValueExA" (ByVal hKey As Long, _
                                                                                     ByVal strLpValueName As String, _
                                                                                     ByVal Reserved As Long, _
                                                                                     ByVal dwType As Long, _
                                                                                     ByVal strLpData As String, _
                                                                                     ByVal cbData As Long) As Long   
      

  5.   

    ,-----------------------------------------------------------------------------------
    '设置注册表数据DWORD型
    '参数:             hKey                        -指定一个打开的键句柄
    '                   strLpValueName              -要设置键句柄值的名称
    '                   Reserved                    -保留参数必须为“0”
    '                   dwType                      -键句柄数据类型
    '                   strlpData                   -记录键句柄值的缓冲区
    '                   cbData                      -用于存储strlpData实际长度
    Private Declare Function RegSetValueEx_DWORD Lib "advapi32" Alias "RegSetValueExA" (ByVal hKey As Long, _
                                                                                        ByVal strLpValueName As String, _
                                                                                        ByVal Reserved As Long, _
                                                                                        ByVal dwType As Long, _
                                                                                        lpData As Long, _
                                                                                        ByVal cbData As Long) As Long   
                                                                                        
    '----------------------------------------------------------------------------------
    '设置注册表数据BINARY型
    '参数:             hKey                        -指定一个打开的键句柄
    '                   strLpValueName              -要设置键句柄值的名称
    '                   Reserved                    -保留参数必须为“0”
    '                   dwType                      -键句柄数据类型
    '                   strlpData                   -记录键句柄值的缓冲区
    '                   cbData                      -用于存储strlpData实际长度
    Private Declare Function RegSetValueEx_BINARY Lib "advapi32" Alias "RegSetValueExA" (ByVal hKey As Long, _
                                                                                         ByVal strLpValueName As String, _
                                                                                         ByVal Reserved As Long, _
                                                                                         ByVal dwType As Long, _
                                                                                         lpData As Any, _
                                                                                         ByVal cbData As Long) As Long
    '-------------------------------------------------------------------------------------------------------------
    '删除关键字
    '参数:            hKey                        -指向一个打开的键句柄
    '                  lpSubKey                    -要删除的登录键句柄文件夹,这个名称以下的子文件夹也会被删除
    Private Declare Function RegDeleteKey Lib "advapi32.dll" Alias "RegDeleteKeyA" (ByVal hKey As Long, _
                                                                                    ByVal lpSubKey As String) As Long
                                                                                    '------------------------------------------------------------------------------------------------------------
    '从登录关键字中删除一个值
    '参数:            hKey                       -打开一个指定的键句柄
    '                  lpSubKey                   -要删除键句柄值的项目名称,可设置为vbNullString的空字符串,
    '                                              表示清空其值
    Private Declare Function RegDeleteValue Lib "advapi32.dll" Alias "RegDeleteValueA" (ByVal hKey As Long, _
                                                                                        ByVal lpSubKey As String) As Long
    '-----------------------------------------------------------------------------------------------------------
    '可枚举指定文件夹里的键句柄值
    '参数:            hKey                      -指向一个打开的键句柄
    '                  dwIndex                   -要获取子文件夹项目的索引编号,其第一个为“0”
    '                  strLpName                 -存储索引项目的缓冲区
    '                  cbName                    -用于存储strLpName实际长度的缓冲区
    Private Declare Function RegEnumKey Lib "advapi32.dll" Alias "RegEnumKeyA" (ByVal hKey As Long, _
                                                                               ByVal dwIndex As Long, _
                                                                               ByVal strLpName As String, _
                                                                               ByVal cbName As Long _
                                                                               ) As Long'声明注册表关键字根类型
    Public Enum REGRoot
      [HKEY_CLASSES_ROOT] = &H80000000
      [HKEY_CURRENT_USER] = &H80000001
      [HKEY_LOCAL_MACHINE] = &H80000002
      [HKEY_USERS] = &H80000003
      [HKEY_PERFORMANCE_DATA] = &H80000004
    End Enum' 注册表的数据类型
    Public Enum REGValueType
        [REG_SZ] = 1                             ' Unicode空终结字符串
        [REG_EXPAND_SZ] = 2                      ' Unicode空终结字符串
        [REG_BINARY] = 3                         ' 二进制数值
        [REG_DWORD] = 4                          ' 32-bit 数字
        [REG_DWORD_BIG_ENDIAN] = 5
        [REG_LINK] = 6
        [REG_MULTI_SZ] = 7                       ' 二进制数值串
    End Enum' 注册表创建类型值...
     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
                           
                           ' 返回值...
     Const ERROR_NONE = 0
     Const ERROR_BADKEY = 2
     Const ERROR_ACCESS_DENIED = 8
     Const ERROR_SUCCESS = 0
      

  6.   

    我把你读硬件信息的那部分代码输入vb,但抱错:
    constant,fixed-lenth strings,arrays,user-defined types and declare statement not allowed as public menber of object module!