Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1

    Eliminare chiave da registro

    In una delle pillole ho torvato questo codice, scritto da xegallo, che permette di fare partire un programma con l'avvio di windows andando a scrive un chiave nel registro.
    il codice, che funziona perfettamente è questo:

    codice:
    'nella sezione dichiarazioni di un modulo
    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
    Declare Function RegCloseKey Lib "advapi32.dll" _
        (ByVal hKey As Long) As Long
    Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" _
        (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
    
    Public Const HKEY_CLASSES_ROOT = &H80000000
    Public Const HKEY_CURRENT_USER = &H80000001
    Public Const HKEY_LOCAL_MACHINE = &H80000002
    Public Const HKEY_USERS = &H80000003
    Public Const HKEY_PERFORMANCE_DATA = &H80000004
    Public Const ERROR_SUCCESS = 0&
    Public Const REG_SZ = 1 
    Public Const REG_DWORD = 4 
    
    'in un modulo
    Public Sub savestring(hKey As Long, strPath As String, _
            strValue As String, strdata As String)
        
        Dim keyhand As Long
        Dim r As Long
        r = RegCreateKey(hKey, strPath, keyhand)
        r = RegSetValueEx(keyhand, strValue, 0, REG_SZ, ByVal strdata, Len(strdata))
        r = RegCloseKey(keyhand)
    End Sub
    
    'nella procedura che salva la voce nel registro
    path = App.path & "\" & App.EXEName & ".exe"
          Call savestring(HKEY_LOCAL_MACHINE, _
            " SOFTWARE\Microsoft\Windows\CurrentVersio
    n\Run", app.exename, path)
    Il problema è: Come fare per cancellare da codice quella chiave nel registro?

    grazie
    Se per ogni sbaglio avessi 1000 Lire che vecchiaia che passerei! [Non è tempo per noi - Ligabue]
    Strade?! Dove andiamo noi non ci servono.....strade!

  2. #2
    devi usare

    Private Declare Function RegDeleteKey Lib "advapi32.dll" Alias "RegDeleteKeyA" (ByVal hKey As Long, ByVal lpSubKey As String) As Long


    in hkey passi phkResult di

    Private Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal Reserved As Long, ByVal samDesired As Long, phkResult As Long) As Long

    e in lpsubkey passi ""
    Vascello fantasma dei mentecatti nonchè baronetto della scara corona alcolica, piccolo spuccello di pezza dislessico e ubriaco- Colui che ha modificato l'orribile scritta - Gran Evacuatore Mentecatto - Tristo Mietitore Mentecatto chi usa uTonter danneggia anche te

  3. #3
    Un passo alla volta

    allora... ho aggiunto le dichiarazioni, ora è così:

    codice:
    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
    Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
    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 RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal Reserved As Long, ByVal samDesired As Long, phkResult As Long) As Long

    però non ho capito come richiamarle (il discoro dei parametri)
    Se per ogni sbaglio avessi 1000 Lire che vecchiaia che passerei! [Non è tempo per noi - Ligabue]
    Strade?! Dove andiamo noi non ci servono.....strade!

  4. #4
    Originariamente inviato da Saturno83
    Un passo alla volta

    allora... ho aggiunto le dichiarazioni, ora è così:

    codice:
    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
    Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
    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 RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal Reserved As Long, ByVal samDesired As Long, phkResult As Long) As Long

    però non ho capito come richiamarle (il discoro dei parametri)
    codice:
    Const HKEY_CURRENT_USER = &H80000001
    Const REG_OPTION_BACKUP_RESTORE = 4     
    Const REG_OPTION_VOLATILE = 1            
    Const REG_OPTION_NON_VOLATILE = 0         
    Const STANDARD_RIGHTS_ALL = &H1F0000
    Const SYNCHRONIZE = &H100000
    Const READ_CONTROL = &H20000
    Const STANDARD_RIGHTS_READ = (READ_CONTROL)
    Const STANDARD_RIGHTS_WRITE = (READ_CONTROL)
    Const KEY_CREATE_LINK = &H20
    Const KEY_CREATE_SUB_KEY = &H4
    Const KEY_ENUMERATE_SUB_KEYS = &H8
    Const KEY_NOTIFY = &H10
    Const KEY_QUERY_VALUE = &H1
    Const KEY_SET_VALUE = &H2
    Const KEY_READ = ((STANDARD_RIGHTS_READ Or KEY_QUERY_VALUE Or KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY) And (Not SYNCHRONIZE))
    Const KEY_WRITE = ((STANDARD_RIGHTS_WRITE Or KEY_SET_VALUE Or KEY_CREATE_SUB_KEY) And (Not SYNCHRONIZE))
    Const KEY_EXECUTE = (KEY_READ)
    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))
    
    
     Dim Result As Long
        
        RegOpenKeyEx HKEY_CURRENT_USER, chiave da eliminare, 0, KEY_ALL_ACCESS, Result
        
        If Result <> 0 Then
            RegDeleteKey Result, ""
        end if
    Vascello fantasma dei mentecatti nonchè baronetto della scara corona alcolica, piccolo spuccello di pezza dislessico e ubriaco- Colui che ha modificato l'orribile scritta - Gran Evacuatore Mentecatto - Tristo Mietitore Mentecatto chi usa uTonter danneggia anche te

  5. #5
    Non ci sono riuscito ... lo so sono kappato

    Ricominciamo da capo:

    Nel modulo ho:

    codice:
    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
    Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
    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 RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal Reserved As Long, ByVal samDesired As Long, phkResult As Long) As Long
    
    Public Who As String
    Public Const HKEY_CLASSES_ROOT = &H80000000
    Public Const HKEY_CURRENT_USER = &H80000001
    Public Const HKEY_LOCAL_MACHINE = &H80000002
    Public Const HKEY_USERS = &H80000003
    Public Const HKEY_PERFORMANCE_DATA = &H80000004
    Public Const ERROR_SUCCESS = 0&
    Public Const REG_SZ = 1
    Public Const REG_DWORD = 4
    
    Public Sub savestring(hKey As Long, strPath As String, strValue As String, strdata As String)
        
        Dim keyhand As Long
        Dim r As Long
        r = RegCreateKey(hKey, strPath, keyhand)
        r = RegSetValueEx(keyhand, strValue, 0, REG_SZ, ByVal strdata, Len(strdata))
        r = RegCloseKey(keyhand)
    End Sub
    associato ad un bottone ho:

    codice:
    Private Sub Command1_Click()
    Dim Path As String
    Path = App.Path & "\" & App.EXEName & ".exe"
    Call savestring(HKEY_LOCAL_MACHINE, "SOFTWARE\Microsoft\Windows\CurrentVersion\Run", App.EXEName, Path)
    End Sub
    Fin qui ci siamo, funziona, crea la chiave nel registro.
    Adesso io vorrei che su Command2_click() ci sia il comando per cancellare la chiave appena creata.
    Cosa devo aggiungere per fare ciò?
    Se per ogni sbaglio avessi 1000 Lire che vecchiaia che passerei! [Non è tempo per noi - Ligabue]
    Strade?! Dove andiamo noi non ci servono.....strade!

  6. #6
    codice:
    Dim Result As Long
        RegOpenKeyEx HKEY_LOCAL_MACHINE, " SOFTWARE\Microsoft\Windows\CurrentVersio
    n\Run", 0, KEY_ALL_ACCESS, Result
        If Result <> 0 Then
            RegDeleteKey Result, ""
        end if
        RegCloseKey
    Vascello fantasma dei mentecatti nonchè baronetto della scara corona alcolica, piccolo spuccello di pezza dislessico e ubriaco- Colui che ha modificato l'orribile scritta - Gran Evacuatore Mentecatto - Tristo Mietitore Mentecatto chi usa uTonter danneggia anche te

  7. #7


    Da errore su "RegCloseKey" (Argomento non facoltativo)
    e tra l'altro non passa dentro l'if
    Se per ogni sbaglio avessi 1000 Lire che vecchiaia che passerei! [Non è tempo per noi - Ligabue]
    Strade?! Dove andiamo noi non ci servono.....strade!

  8. #8
    Originariamente inviato da Saturno83


    Da errore su "RegCloseKey" (Argomento non facoltativo)
    e tra l'altro non passa dentro l'if
    regclosekey l'argomento è result

    se provi a togliere l'if da errore?
    Vascello fantasma dei mentecatti nonchè baronetto della scara corona alcolica, piccolo spuccello di pezza dislessico e ubriaco- Colui che ha modificato l'orribile scritta - Gran Evacuatore Mentecatto - Tristo Mietitore Mentecatto chi usa uTonter danneggia anche te

  9. #9
    Originariamente inviato da xegallo
    regclosekey l'argomento è result

    se provi a togliere l'if da errore?
    non da errore... però la chiave non la cancella
    Se per ogni sbaglio avessi 1000 Lire che vecchiaia che passerei! [Non è tempo per noi - Ligabue]
    Strade?! Dove andiamo noi non ci servono.....strade!

  10. #10
    non mi abbandonare proprio adesso
    Se per ogni sbaglio avessi 1000 Lire che vecchiaia che passerei! [Non è tempo per noi - Ligabue]
    Strade?! Dove andiamo noi non ci servono.....strade!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.