Results 1 to 7 of 7
  1. #1
    Join Date
    Apr 2005
    Posts
    203

    Talking Unanswered: Problem deleting registery key encluding subkey values

    I am trying to delete registery key encluding all its subkeys . I want to delete the bold part

    HKEY_CURRENT_USER, "Software\xyz\foldername\"

    using an api that i found on the net but i keep geting error!! could any one tell me how to delete entire key with its subkeys ?


    I changed :

    Code:
    Private Sub Command3_Click()
        'Delete the setting from the registry
        DelSetting HKEY_CURRENT_USER, "KPD-Team", "BinaryValue"
        MsgBox "The value was deleted ...", vbInformation + vbOKOnly, App.Title
    End Sub


    to





    Code:
    Private Sub Command2_Click()
        'Delete the setting from the registry
        DelSetting HKEY_CURRENT_USER, "Software\xyz\foldername\"
        MsgBox "The value was deleted ...", vbInformation + vbOKOnly, App.Title
    
    End Sub



    But it did not work and give me that error!!!!


    error:


    Code:
    Compile error:
    
    Argument not optional
    and pointing at :

    DelSetting



    Orginal API code


    Code:
    'This program needs 3 buttons
    Const REG_SZ = 1 ' Unicode nul terminated string
    Const REG_BINARY = 3 ' Free form binary
    Const HKEY_CURRENT_USER = &H80000001
    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 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
    Function RegQueryStringValue(ByVal hKey As Long, ByVal strValueName As String) As String
        Dim lResult As Long, lValueType As Long, strBuf As String, lDataBufSize As Long
        'retrieve nformation about the key
        lResult = RegQueryValueEx(hKey, strValueName, 0, lValueType, ByVal 0, lDataBufSize)
        If lResult = 0 Then
            If lValueType = REG_SZ Then
                'Create a buffer
                strBuf = String(lDataBufSize, Chr$(0))
                'retrieve the key's content
                lResult = RegQueryValueEx(hKey, strValueName, 0, 0, ByVal strBuf, lDataBufSize)
                If lResult = 0 Then
                    'Remove the unnecessary chr$(0)'s
                    RegQueryStringValue = Left$(strBuf, InStr(1, strBuf, Chr$(0)) - 1)
                End If
            ElseIf lValueType = REG_BINARY Then
                Dim strData As Integer
                'retrieve the key's value
                lResult = RegQueryValueEx(hKey, strValueName, 0, 0, strData, lDataBufSize)
                If lResult = 0 Then
                    RegQueryStringValue = strData
                End If
            End If
        End If
    End Function
    Function GetString(hKey As Long, strPath As String, strValue As String)
        Dim Ret
        'Open the key
        RegOpenKey hKey, strPath, Ret
        'Get the key's content
        GetString = RegQueryStringValue(Ret, strValue)
        'Close the key
        RegCloseKey Ret
    End Function
    Sub SaveString(hKey As Long, strPath As String, strValue As String, strData As String)
        Dim Ret
        'Create a new key
        RegCreateKey hKey, strPath, Ret
        'Save a string to the key
        RegSetValueEx Ret, strValue, 0, REG_SZ, ByVal strData, Len(strData)
        'close the key
        RegCloseKey Ret
    End Sub
    Sub SaveStringLong(hKey As Long, strPath As String, strValue As String, strData As String)
        Dim Ret
        'Create a new key
        RegCreateKey hKey, strPath, Ret
        'Set the key's value
        RegSetValueEx Ret, strValue, 0, REG_BINARY, CByte(strData), 4
        'close the key
        RegCloseKey Ret
    End Sub
    Sub DelSetting(hKey As Long, strPath As String, strValue As String)
        Dim Ret
        'Create a new key
        RegCreateKey hKey, strPath, Ret
        'Delete the key's value
        RegDeleteValue Ret, strValue
        'close the key
        RegCloseKey Ret
    End Sub
    Private Sub Command1_Click()
        Dim strString As String
        'Ask for a value
        strString = InputBox("Please enter a value between 0 and 255 to be saved as a binary value in the registry.", App.Title)
        If strString = "" Or Val(strString) > 255 Or Val(strString) < 0 Then
            MsgBox "Invalid value entered ...", vbExclamation + vbOKOnly, App.Title
            Exit Sub
        End If
        'Save the value to the registry
        SaveStringLong HKEY_CURRENT_USER, "KPD-Team", "BinaryValue", CByte(strString)
    End Sub
    Private Sub Command2_Click()
        'Get a string from the registry
        Ret = GetString(HKEY_CURRENT_USER, "KPD-Team", "BinaryValue")
        If Ret = "" Then MsgBox "No value found !", vbExclamation + vbOKOnly, App.Title: Exit Sub
        MsgBox "The value is " + Ret, vbOKOnly + vbInformation, App.Title
    End Sub
    Private Sub Command3_Click()
        'Delete the setting from the registry
        DelSetting HKEY_CURRENT_USER, "KPD-Team", "BinaryValue"
        MsgBox "The value was deleted ...", vbInformation + vbOKOnly, App.Title
    End Sub
    Private Sub Form_Load()
        'KPD-Team 1998
        'URL: http://www.allapi.net/
        'E-Mail: KPDTeam@Allapi.net
        Command1.Caption = "Set Value"
        Command2.Caption = "Get Value"
        Command3.Caption = "Delete Value"
    End Sub

  2. #2
    Join Date
    Jun 2006
    Location
    Colton, CA
    Posts
    26
    DeleteSetting is a VB method. DelSetting is not.

    Use

    Code:
    on error goto DeleteError
    DeleteSetting("xyz", "options", "foldername")
    msgbox "Key deleted", vbinformation + vbokonly, "Success!"
    exit sub
    
    DeleteError:
    msgbox "Could not delete key", vbinformation + vbokonly, "Error!"
    Geek it till it mHz

  3. #3
    Join Date
    Apr 2005
    Posts
    203
    Quote Originally Posted by spikey_richie
    DeleteSetting is a VB method. DelSetting is not.

    Use

    Code:
    on error goto DeleteError
    DeleteSetting("xyz", "options", "foldername")
    msgbox "Key deleted", vbinformation + vbokonly, "Success!"
    exit sub
    
    DeleteError:
    msgbox "Could not delete key", vbinformation + vbokonly, "Error!"
    Thenk u for u reply. does this deletes all sub keys as well . For example newfolder is key that has many subkesy inside it and i want to delete newfolder and subkeys inside it. So u think this will do it ?

  4. #4
    Join Date
    Jun 2006
    Location
    Colton, CA
    Posts
    26
    The 3rd parameter is the keyname, so you'll need to do this for EACH key.

    DeleteSetting("xyz", "options", "folder1")
    DeleteSetting("xyz", "options", "folder2")
    DeleteSetting("xyz", "options", "folder3")

    etc...
    Geek it till it mHz

  5. #5
    Join Date
    Apr 2005
    Posts
    203
    Quote Originally Posted by spikey_richie
    The 3rd parameter is the keyname, so you'll need to do this for EACH key.

    DeleteSetting("xyz", "options", "folder1")
    DeleteSetting("xyz", "options", "folder2")
    DeleteSetting("xyz", "options", "folder3")

    etc...
    what refrences and components do i need or just i place :

    DeleteSetting("xyz", "options", "folder1")
    DeleteSetting("xyz", "options", "folder2")
    DeleteSetting("xyz", "options", "folder3")

    inside a command button? What is options is used for ?Thanks

  6. #6
    Join Date
    Jun 2006
    Location
    Colton, CA
    Posts
    26
    You don't need any of that API stuff - Get/Set/Delete Setting are all built-in methods of VB (and VBA)

    If you type DeleteSettings( in VB/VBA, you SHOULD see a list of parameters appear (if not, click the Object Browser icon on the toolbar)

    The first part is the AppName, the second is the 'Section' and the 3rd is the key
    Geek it till it mHz

  7. #7
    Join Date
    Apr 2005
    Posts
    203
    Quote Originally Posted by spikey_richie
    You don't need any of that API stuff - Get/Set/Delete Setting are all built-in methods of VB (and VBA)

    If you type DeleteSettings( in VB/VBA, you SHOULD see a list of parameters appear (if not, click the Object Browser icon on the toolbar)

    The first part is the AppName, the second is the 'Section' and the 3rd is the key
    I tired DeleteSettings. and it did not give any options!! i am in vb6. I tried this code so it goes deletes entire key and subkeys and it shows the line in red!!

    Code:
    Private Sub Command2_Click()
    DeleteSetting("xyz", "options", "folder1") ===> shows in red
    
    End Sub

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •