nguoikemcoi
Thành viên mới
- Tham gia
- 24/11/07
- Bài viết
- 17
- Được thích
- 0
Chào anh chị.
Em có tham khảo trên trang: http://www.vb-helper.com có code delete key và lấy thông tin của 1 key trong registry.
Xin hỏi anh chi Key và Subkey khác chổ nào.
biến Section trong sub DeleteKey có phải được hiểu như sau không:
Mong hồi đáp/
Cảm ơn.
Em có tham khảo trên trang: http://www.vb-helper.com có code delete key và lấy thông tin của 1 key trong registry.
Xin hỏi anh chi Key và Subkey khác chổ nào.
biến Section trong sub DeleteKey có phải được hiểu như sau không:
- 1) HKEY_CLASSES_ROOT Thông tin hệ điều hành
- 2) HKEY_CURRENT_CONFIG Thông tin cấu hình hiện tại của máy tính
- 3) HKEY_LOCAL_MACHINE Thông tin các chương trình cho mọi người dùng
- 4) HKEY_CURRENT_USER Thông tin các chương trình cho người dùng hiện tại
- 5) HKEY_USERS Thông tin cho tất cả người dùng
Mã:
Private Sub DeleteKey(ByVal section As Long, ByVal key_name _
As String)
Dim pos As Integer
Dim parent_key_name As String
Dim parent_hKey As Long
If Right$(key_name, 1) = "\" Then key_name = _
Left$(key_name, Len(key_name) - 1)
' Delete the key's subkeys.
DeleteSubkeys section, key_name
' Get the parent's name.
pos = InStrRev(key_name, "\")
If pos = 0 Then
' This is a top-level key.
' Delete it from the section.
RegDeleteKey section, key_name
Else
' This is not a top-level key.
' Find the parent key.
parent_key_name = Left$(key_name, pos - 1)
key_name = Mid$(key_name, pos + 1)
' Open the parent key.
If RegOpenKeyEx(section, _
parent_key_name, _
0&, KEY_ALL_ACCESS, parent_hKey) <> _
ERROR_SUCCESS _
Then
MsgBox "Error opening parent key"
Else
' Delete the key from its parent.
RegDeleteKey parent_hKey, key_name
' Close the parent key.
RegCloseKey parent_hKey
End If
End If
End Sub
' Delete all the key's subkeys.
Private Sub DeleteSubkeys(ByVal section As Long, ByVal _
key_name As String)
Dim hKey As Long
Dim subkeys As Collection
Dim subkey_num As Long
Dim length As Long
Dim subkey_name As String
' Open the key.
If RegOpenKeyEx(section, key_name, _
0&, KEY_ALL_ACCESS, hKey) <> ERROR_SUCCESS _
Then
MsgBox "Error opening key '" & key_name & "'"
Exit Sub
End If
' Enumerate the subkeys.
Set subkeys = New Collection
subkey_num = 0
Do
' Enumerate subkeys until we get an error.
length = 256
subkey_name = Space$(length)
If RegEnumKey(hKey, subkey_num, _
subkey_name, length) _
<> ERROR_SUCCESS Then Exit Do
subkey_num = subkey_num + 1
subkey_name = Left$(subkey_name, InStr(subkey_name, _
Chr$(0)) - 1)
subkeys.Add subkey_name
Loop
' Recursively delete the subkeys and their subkeys.
For subkey_num = 1 To subkeys.Count
' Delete the subkey's subkeys.
DeleteSubkeys section, key_name & "\" & _
subkeys(subkey_num)
' Delete the subkey.
RegDeleteKey hKey, subkeys(subkey_num)
Next subkey_num
' Close the key.
RegCloseKey hKey
End Sub
' Get the key information for this key and
' its subkeys.
Private Function GetKeyInfo(ByVal section As Long, ByVal _
key_name As String, ByVal indent As Integer) As String
Dim subkeys As Collection
Dim subkey_values As Collection
Dim subkey_num As Integer
Dim subkey_name As String
Dim subkey_value As String
Dim length As Long
Dim hKey As Long
Dim txt As String
Dim subkey_txt As String
Set subkeys = New Collection
Set subkey_values = New Collection
If Right$(key_name, 1) = "\" Then key_name = _
Left$(key_name, Len(key_name) - 1)
' Open the key.
If RegOpenKeyEx(section, _
key_name, _
0&, KEY_ALL_ACCESS, hKey) <> ERROR_SUCCESS _
Then
MsgBox "Error opening key."
Exit Function
End If
' Enumerate the subkeys.
subkey_num = 0
Do
' Enumerate subkeys until we get an error.
length = 256
subkey_name = Space$(length)
If RegEnumKey(hKey, subkey_num, _
subkey_name, length) _
<> ERROR_SUCCESS Then Exit Do
subkey_num = subkey_num + 1
subkey_name = Left$(subkey_name, InStr(subkey_name, _
Chr$(0)) - 1)
subkeys.Add subkey_name
' Get the subkey's value.
length = 256
subkey_value = Space$(length)
If RegQueryValue(hKey, subkey_name, _
subkey_value, length) _
<> ERROR_SUCCESS _
Then
subkey_values.Add "Error"
Else
' Remove the trailing null character.
subkey_value = Left$(subkey_value, length - 1)
subkey_values.Add subkey_value
End If
Loop
' Close the key.
If RegCloseKey(hKey) <> ERROR_SUCCESS Then
MsgBox "Error closing key."
End If
' Recursively get information on the keys.
For subkey_num = 1 To subkeys.Count
subkey_txt = GetKeyInfo(section, key_name & "\" & _
subkeys(subkey_num), indent + 2)
txt = txt & Space(indent) & _
subkeys(subkey_num) & _
": " & subkey_values(subkey_num) & vbCrLf & _
subkey_txt
Next subkey_num
GetKeyInfo = txt
End Function
Mong hồi đáp/
Cảm ơn.