레지스트리 하위 키를 삭제하는 응용 프로그램에서 작업하고 있지만 해당 문제에 대한 해결책을 찾지 못하는 것 같습니다. VB.NET에서이 작업이 더 쉽다는 것을 알고 있습니다. 그러나 나는이 VB6Visual Basic 6에서 레지스트리 하위 키 삭제
내가 시도 무엇...
DeleteRegKey HKEY_CURRENT_USER\Software\Test
을 사용하여 수행하는 방법을 알고 싶어요.
레지스트리 하위 키를 삭제하는 응용 프로그램에서 작업하고 있지만 해당 문제에 대한 해결책을 찾지 못하는 것 같습니다. VB.NET에서이 작업이 더 쉽다는 것을 알고 있습니다. 그러나 나는이 VB6Visual Basic 6에서 레지스트리 하위 키 삭제
내가 시도 무엇...
DeleteRegKey HKEY_CURRENT_USER\Software\Test
을 사용하여 수행하는 방법을 알고 싶어요.
가치있는 것을 위해 이것을 가져 가십시오. 필자는 Windows 8에서 테스트하지 않았으므로 몇 년 후에 이것을 사용하지 않았으며 Windows 7에 대해서도 전혀 확신하지 못했습니다. 유틸리티 클래스에서이 코드를 가져 와서 모든 선언을 얻었기를 바랍니다.
Private Const KEY_NOTIFY = &H10
Private Const KEY_QUERY_VALUE = &H1
Private Const KEY_CREATE_LINK = &H20
Private Const KEY_CREATE_SUB_KEY = &H4
Private Const KEY_ENUMERATE_SUB_KEYS = &H8
Private Const KEY_EVENT = &H1
Private Const KEY_SET_VALUE = &H2
Private Const KEY_ALL_ACCESS = ((STANDARD_RIGHTS_ALL Or KEY_QUERY_VALUE Or KEY_SET_VALUE Or KEY_CREATE_SUB_KEY Or KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY Or KEY_CREATE_LINK) And (Not SYNCHRONIZE))
Private Const KEY_READ = ((STANDARD_RIGHTS_READ Or KEY_QUERY_VALUE Or KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY) And (Not SYNCHRONIZE))
Private Const KEY_EXECUTE = ((KEY_READ) And (Not SYNCHRONIZE))
Private Const KEY_WRITE = ((STANDARD_RIGHTS_WRITE Or KEY_SET_VALUE Or KEY_CREATE_SUB_KEY) And (Not SYNCHRONIZE))
Public Enum RegRootKey
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
Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
Private 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, ByVal lpSecurityAttributes As Long, phkResult As Long, lpdwDisposition 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 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 FILETIME) As Long
Public Function DeleteRegKey(ByVal hKeyRoot As RegRootKey, ByVal hKeySubKey As String, ByVal KeyName As String) As Boolean
Dim lngRst As Long
Dim hKeyReturn As Long
Dim hKeyDisposition As Long
Dim strSubKeys() As String
Dim lngSubKeyCount As Long
Dim i As Long
On Error GoTo errDeleteRegKey
lngRst = RegOpenKeyEx(hKeyRoot, hKeySubKey, ByVal 0&, KEY_READ + KEY_WRITE, hKeyReturn)
If lngRst = 0 Then 'we can continue
' first need to find and delete sub keys
lngSubKeyCount = EnumSubKeys(hKeyRoot, hKeySubKey & "\" & KeyName, strSubKeys)
' recursively call this function to delete all sub keys
For i = 0 To lngSubKeyCount - 1
Call DeleteRegKey(hKeyRoot, hKeySubKey & "\" & KeyName, strSubKeys(i))
Next i
' finally down (up?) to the parent key
lngRst = RegDeleteKey(hKeyReturn, ByVal KeyName)
'close the handle
If hKeyReturn <> 0 Then
lngRst = RegCloseKey(hKeyReturn)
hKeyReturn = 0
End If
End If
If lngRst = 0 Then '0 = success
DeleteRegKey = True
Else
Err.Raise lngRst, App.EXEName, FormatClassError(lngRst)
End If
Exit Function
errDeleteRegKey:
'close the handle
If hKeyReturn <> 0 Then
lngRst = RegCloseKey(hKeyReturn)
hKeyReturn = 0
End If
Err.Raise Err.Number, Err.Source & ":DeleteRegKey", Err.Description
End Function
이 당신의 책 형태, 모듈, 또는 다음
Call DeleteRegKey(HKEY_CURRENT_USER, "Software", "Test")
' or
DeleteRegKey HKEY_CURRENT_USER, "Software", "Test"
' or
Dim blnRst as Boolean
blnRst = DeleteRegKey(HKEY_CURRENT_USER, "Software", "Test")
답장을 보내 주셔서 감사합니다.하지만 원하는 경우이 작업을 수행하는 방법을 설명 할 수 있습니까? 예를 들어 "HKEY_CURRENT_USER \ Software \ Test"에서 "Test"라는 레지스트리 키를 삭제 하시겠습니까? 감사합니다 – user3104111
@ user3104111 제 편집을 참조하십시오. – jac
클래스에이 기능을 추가 http://www.amazon.com/Applemans-Visual-Basic-Programmers-Guide/ dp/0672315904 – Jeff
@JeffOnsager 감사합니다. 그러나 지금 당장 구매하는 데 관심이 없습니다. 여기에 대한 해결책을 제공 할 수 있다면 위대 할 것입니다. – user3104111
코드를 게시하고 코드의 어떤 부분에 대한 설명을 게시해야합니다 너는 문제가있다. – jac