VBMAN.Regedit - Registry Operation Object
Overview
VBMAN.Regedit provides Windows registry read/write functionality, implemented by calling the reg command line tool.
Core Features
- Query Registry Items: Support querying keys under specified path
- Add/Modify Key Values: Support creating or updating registry items
- Delete Key Values: Support deleting specified registry items
- Type Safety: Use TypeRegData type to encapsulate return values
Data Structure
TypeRegData
Registry item data structure
vb
Public Type TypeRegData
HasName As Boolean ' Whether has name
RegName As String ' Key name
RegType As String ' Type (REG_SZ, REG_DWORD, etc.)
RegValue As String ' Key value
End TypeProperties
| Property | Type | Description |
|---|---|---|
LastError | String | Last error message |
Methods
FindItem
Query registry items, return array
vb
Public Function FindItem(ByVal Path As String, Optional ByVal Name As String) As TypeRegData()Parameters:
Path- Registry path, e.g.,"HKCU\Software\Microsoft\Windows\CurrentVersion\Run"Name- Key name (optional, if empty returns all keys)
Returns: TypeRegData array
Example:
vb
Dim items() As TypeRegData
items = VBMAN.Regedit.FindItem("HKCU\Software\Microsoft\Windows\CurrentVersion\Run")
Dim i As Long
For i = LBound(items) To UBound(items)
If items(i).HasName Then
Debug.Print items(i).RegName & " = " & items(i).RegValue
End If
Next iFindFirst
Query first matching registry value
vb
Public Function FindFirst(ByVal Path As String, Optional ByVal Name As String) As VariantReturns: Key value (string), returns empty string if not found
Example:
vb
Dim value As Variant
value = VBMAN.Regedit.FindFirst("HKCU\Software\Microsoft\Windows\CurrentVersion\Run", "Notepad")
If value <> vbNullString Then
Debug.Print "Found value: " & value
End IfFindLast
Query last matching registry value
vb
Public Function FindLast(ByVal Path As String, Optional ByVal Name As String) As VariantSaveItem
Add or modify registry item
vb
Public Function SaveItem(ByVal Path As String, ByVal Name As String, ByVal Data As Variant, Optional StartArgs As Variant, Optional IsOverWrite As Boolean = True) As BooleanParameters:
Path- Registry pathName- Key nameData- Key valueStartArgs- Startup parameters (optional)IsOverWrite- Whether to overwrite (default True)
Returns: True=success, False=failure
Example:
vb
' Add startup item
Dim success As Boolean
success = VBMAN.Regedit.SaveItem( _
"HKCU\Software\Microsoft\Windows\CurrentVersion\Run", _
"MyApp", _
"C:\MyApp\app.exe" _
)
If success Then
MsgBox "Add successful"
Else
MsgBox "Add failed: " & VBMAN.Regedit.LastError
End IfDeleteItem
Delete registry item
vb
Public Function DeleteItem(ByVal Path As String, ByVal Name As String) As BooleanExample:
vb
' Delete startup item
Dim success As Boolean
success = VBMAN.Regedit.DeleteItem("HKCU\Software\Microsoft\Windows\CurrentVersion\Run", "MyApp")Comprehensive Examples
Example 1: Manage Startup Items
vb
Private Sub ManageStartup()
Const RUN_PATH As String = "HKCU\Software\Microsoft\Windows\CurrentVersion\Run"
' Add startup item
VBMAN.Regedit.SaveItem RUN_PATH, "MyApplication", App.Path & "\" & App.EXEName & ".exe"
' Query all startup items
Dim items() As TypeRegData
items = VBMAN.Regedit.FindItem(RUN_PATH)
Dim i As Long
For i = LBound(items) To UBound(items)
If items(i).HasName Then
List1.AddItem items(i).RegName & " = " & items(i).RegValue
End If
Next i
' Delete startup item
' VBMAN.Regedit.DeleteItem RUN_PATH, "MyApplication"
End SubExample 2: Read System Information
vb
Private Sub ReadSystemInfo()
' Read Windows version
Dim version As Variant
version = VBMAN.Regedit.FindFirst("HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion", "DisplayVersion")
Debug.Print "Windows version: " & version
' Read computer name
Dim computerName As Variant
computerName = VBMAN.Regedit.FindFirst("HKLM\SYSTEM\CurrentControlSet\Control\ComputerName\ComputerName", "ComputerName")
Debug.Print "Computer name: " & computerName
End SubBest Practices
- Error Checking: Check
LastErroror use return value to determine result after operation - Permission Note: Modifying HKLM requires administrator privileges
- Backup Registry: Recommend backing up before large-scale modifications
- Use Constants: Define commonly used paths as constants
Notes
- Registry operations need to be cautious, incorrect modifications may cause system issues
- Some operations may require administrator privileges
- Executed through
regcommand, depends on system command line tools