📄 module1.bas
字号:
Attribute VB_Name = "HCRegistyIO"
Public pro As Integer
Public vir As Integer
Option Explicit
Public Enum HCHKeyRoot
HKEY_CLASSES_ROOT = &H80000000
HKEY_CURRENT_CONFIG = &H80000005
HKEY_CURRENT_USER = &H80000001
HKEY_DYN_DATA = &H80000006
HKEY_LOCAL_MACHINE = &H80000002
HKEY_PERFORMANCE_DATA = &H80000004
HKEY_USERS = &H80000003
End Enum
Public Enum HCRegKeyType
REG_BINARY = 3 ' Free form binary
REG_CREATED_NEW_KEY = &H1 ' New Registry Key created
REG_DWORD = 4 ' 32-bit number
REG_DWORD_BIG_ENDIAN = 5 ' 32-bit number
REG_DWORD_LITTLE_ENDIAN = 4 ' 32-bit number (same as REG_DWORD)
REG_EXPAND_SZ = 2 ' Unicode nul terminated string
REG_FULL_RESOURCE_DESCRIPTOR = 9 ' Resource list in the hardware description
REG_LINK = 6 ' Symbolic Link (unicode)
REG_MULTI_SZ = 7 ' Multiple Unicode strings
REG_NONE = 0 ' No value type
REG_NOTIFY_CHANGE_ATTRIBUTES = &H2
REG_NOTIFY_CHANGE_LAST_SET = &H4 ' Time stamp
REG_NOTIFY_CHANGE_NAME = &H1 ' Create or delete (child)
REG_NOTIFY_CHANGE_SECURITY = &H8
REG_OPENED_EXISTING_KEY = &H2 ' Existing Key opened
REG_OPTION_CREATE_LINK = 2 ' Created key is a symbolic link
REG_OPTION_BACKUP_RESTORE = 4 ' open for backup or restore
REG_OPTION_NON_VOLATILE = 0 ' Key is preserved when system is rebooted
REG_OPTION_RESERVED = 0 ' Parameter is reserved
REG_REFRESH_HIVE = &H2 ' Unwind changes to last flush
REG_OPTION_VOLATILE = 1 ' Key is not preserved when system is rebooted
REG_RESOURCE_LIST = 8 ' Resource list in the resource map
REG_RESOURCE_REQUIREMENTS_LIST = 10
REG_SZ = 1 ' Unicode nul terminated string
REG_WHOLE_HIVE_VOLATILE = &H1 ' Restore whole hive volatile
REG_LEGAL_CHANGE_FILTER = (REG_NOTIFY_CHANGE_NAME Or REG_NOTIFY_CHANGE_ATTRIBUTES Or REG_NOTIFY_CHANGE_LAST_SET Or REG_NOTIFY_CHANGE_SECURITY)
REG_LEGAL_OPTION = (REG_OPTION_RESERVED Or REG_OPTION_NON_VOLATILE Or REG_OPTION_VOLATILE Or REG_OPTION_CREATE_LINK Or REG_OPTION_BACKUP_RESTORE)
End Enum
Private Declare Function WritePrivateProfileSection Lib "kernel32" Alias "WritePrivateProfileSectionA" (ByVal lpAppName As String, ByVal lpString As String, ByVal lpFileName As String) As Long
Private Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String) As Long
Private Declare Function GetPrivateProfileSection Lib "kernel32" Alias "GetPrivateProfileSectionA" (ByVal lpAppName As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long
Private Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long
Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
Private Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult 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
Private Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Private 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 Long
Private 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
Private Declare Function RegEnumKeyEx Lib "advapi32.dll" Alias "RegEnumKeyExA" (ByVal hKey As Long, ByVal dwIndex As Long, ByVal lpName As String, lpcbName As Long, ByVal lpReserved As Long, ByVal lpClass As String, lpcbClass As Long, lpftLastWriteTime As Any) As Long
Private 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, lpData As Byte, lpcbData As Long) As Long
Private Declare Function RegConnectRegistry Lib "advapi32.dll" Alias "RegConnectRegistryA" (ByVal lpMachineName As String, ByVal hKey As Long, phkResult As Long) As Long
Private ZeroFlag As Long
Public Function GetIniString(ByVal SectionName As String, ByVal KeyName As String, ByVal FileName As String, Optional ByVal DefaultString As String, Optional ByVal BufferSize As Long = 255) As String
Dim ReturnString As String
ReturnString = Space(BufferSize)
Call GetPrivateProfileString(SectionName, KeyName, DefaultString, ReturnString, BufferSize, FileName)
If IsNull(ReturnString) = True Then
GetIniString = DefaultString
Else
GetIniString = ReturnString
End If
ZeroFlag = VBA.InStr(1, GetIniString, Chr(0), vbTextCompare)
If ZeroFlag <> 0 Then GetIniString = VBA.Left(GetIniString, ZeroFlag - 1)
End Function
Public Function GetIniSection(ByVal SectionName As String, ByVal FileName As String, Optional ByVal BufferSize As Long = 255) As String
Dim ReturnString As String
ReturnString = Space(BufferSize)
Call GetPrivateProfileSection(SectionName, ReturnString, BufferSize, FileName)
GetIniSection = ReturnString
End Function
Public Function WriteIniString(ByVal SectionName As String, ByVal KeyName As String, ByVal PutString As String, ByVal FileName As String) As Long
WriteIniString = WritePrivateProfileString(SectionName, KeyName, PutString, FileName)
End Function
Public Function WriteIniSection(ByVal SectionName As String, ByVal PutString As String, ByVal FileName As String) As Long
WriteIniSection = WritePrivateProfileSection(SectionName, PutString, FileName)
End Function
Public Function GetRegValue(HKEYROOT As HCHKeyRoot, SectionName As String, KeyName As String, Optional DefaultString As String, Optional BufferSize As Long = 255) As String
Dim OpenKeyNum As Long
Dim lResult As Long
Dim GetString As String
Dim GetAnalog As Long
Dim iType As Long
Dim KeyResult As String
RegOpenKey HKEYROOT, SectionName, OpenKeyNum
lResult = RegQueryValueEx(OpenKeyNum, KeyName, 0, iType, ByVal 0&, BufferSize)
If iType = REG_SZ Then
GetString = String(BufferSize, 0)
lResult = RegQueryValueEx(OpenKeyNum, KeyName, 0, iType, ByVal GetString, BufferSize)
KeyResult = GetString
Else
lResult = RegQueryValueEx(OpenKeyNum, KeyName, 0, iType, GetAnalog, BufferSize)
KeyResult = Str(GetAnalog)
End If
If lResult = 0 Then
GetRegValue = KeyResult
Else
GetRegValue = DefaultString
End If
ZeroFlag = VBA.InStr(1, GetRegValue, Chr(0), vbTextCompare)
If ZeroFlag <> 0 Then GetRegValue = VBA.Left(GetRegValue, ZeroFlag - 1)
RegCloseKey OpenKeyNum
End Function
Public Function WriteRegValue(HKEYROOT As HCHKeyRoot, SectionName As String, KeyName As String, KeyValue As String, Optional Flags As HCRegKeyType = REG_NONE) As Long
Dim OpenKeyNum As Long
Dim ErrorCode As Long
Dim TempAnalogValue As Long
Dim TempStringValue As String
RegCreateKey HKEYROOT, SectionName, OpenKeyNum
If Flags = REG_SZ Then
TempStringValue = KeyValue + Chr(0)
ErrorCode = RegSetValueEx(OpenKeyNum, KeyName, 0, REG_SZ, ByVal TempStringValue, Len(TempStringValue) * 2)
Else
TempAnalogValue = Int(KeyValue)
ErrorCode = RegSetValueEx(OpenKeyNum, KeyName, 0, Flags, TempAnalogValue, Len(TempAnalogValue))
End If
RegCloseKey OpenKeyNum
WriteRegValue = ErrorCode
End Function
Public Function DeleteRegSection(ByVal HKEYROOT As HCHKeyRoot, ByVal SectionName As String) As Long
DeleteRegSection = RegDeleteKey(HKEYROOT, SectionName)
End Function
Public Function DeleteRegKey(ByVal HKEYROOT As HCHKeyRoot, ByVal SectionName As String, ByVal KeyName As String)
Dim OpenKeyNum As Long
Dim ErrorCode As Long
RegOpenKey HKEYROOT, SectionName, OpenKeyNum
ErrorCode = RegDeleteValue(OpenKeyNum, KeyName)
RegCloseKey OpenKeyNum
DeleteRegKey = ErrorCode
End Function
Public Function GetRegSubSections(ByVal HKEYROOT As HCHKeyRoot, SectionName As String, Optional ByVal BufferSize As Long = 255) As String
Dim OpenKeyNum As Long
Dim GetString As String
Dim NextSectionIndex As Long
Dim SubSectionName As String
Dim ZeroPos As Integer
RegOpenKey HKEYROOT, SectionName, OpenKeyNum
Do
SubSectionName = String(BufferSize, 0)
If RegEnumKeyEx(OpenKeyNum, NextSectionIndex, SubSectionName, Len(SubSectionName), 0, vbNullString, ByVal 0&, ByVal 0&) <> 0 Then Exit Do
ZeroPos = InStr(1, SubSectionName, Chr(0), vbTextCompare)
If ZeroPos <> 0 Then
SubSectionName = Left(SubSectionName, ZeroPos - 1)
End If
GetString = GetString + SubSectionName + Chr(0)
NextSectionIndex = NextSectionIndex + 1
Loop
RegCloseKey OpenKeyNum
GetRegSubSections = GetString
End Function
Public Function GetRegKeys(ByVal HKEYROOT As HCHKeyRoot, SectionName As String, Optional BufferSize As Long = 255, Optional Flags As HCRegKeyType = REG_NONE) As String
Dim OpenKeyNum As Long
Dim NextKeyIndex As Long
Dim KeyName As String
Dim GetString As String
Dim ZeroPos As Long
RegOpenKey HKEYROOT, SectionName, OpenKeyNum
Do
KeyName = String(255, 0)
If RegEnumValue(OpenKeyNum, NextKeyIndex, KeyName, Len(KeyName), 0, Flags, ByVal 0&, ByVal 0&) <> 0 Then Exit Do
ZeroPos = InStr(1, KeyName, Chr(0), vbTextCompare)
If ZeroPos <> 0 Then
KeyName = Left(KeyName, ZeroPos - 1)
End If
GetString = GetString + KeyName + Chr(0)
NextKeyIndex = NextKeyIndex + 1
Loop
RegCloseKey OpenKeyNum
GetRegKeys = GetString
End Function
Public Function RemoteRegAccess(MachineName As String, ByVal HKEY_ROOT As HCHKeyRoot) As Long
Dim OpenKeyNum As Long
Dim ErrorCode As Long
ErrorCode = RegConnectRegistry("\\" + MachineName, HKEY_ROOT, OpenKeyNum)
If ErrorCode <> 0 Then
RemoteRegAccess = 0
Else
RemoteRegAccess = OpenKeyNum
End If
End Function
'********************************
'删除病毒文件
Public Function del(name As String, ob As Object)
If Dir(name) <> "" Then
Call Kill(name)
ob.AddItem ("发现病毒文件" & name & "已删除")
vir = 1
End If
End Function
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -