Se connecter avec
S'enregistrer | Connectez-vous

[RÉSOLU]Effacer une clé de registre HKCU

Dernière réponse : dans Programmation

J'ai un petit soucis... voici le background :

Nous avons fait un master, créé et paramétré un profil que nous avons ensuite copié dans Default User. Suite à cela, pour chaque nouvel utilisateur, le path de Google Earth est faux dans le registre : il pointe vers "c:\Documents and Settings\Nom_du_profil\Application Data\Google Earth" avec le "Nom_du_profil" en dur et non pas en tant que variable (%username%).

Nous avons remarqué cela récemment, il y a donc passablement de profils créés sur les postes et nous n'allons pas le modifier à chaque fois.

J'ai donc cherché et en suis arrivé au script suivant :


  1. Dim WshShell, key
  2.  
  3. Set WshShell = WScript.CreateObject("WScript.Shell" )
  4.  
  5. key = "HKEY_CURRENT_USER\Software\Google\Google Earth Plus"
  6.  
  7. WshShell.RegDelete pkey


Impossible de deleter la clé "HKEY_CURRENT_USER\Software\Google\Google Earth Plus" du fait des espaces je pense... j'ai donc essayé de concaténer, ben ça marche pas non plus !

Quelqu'un aurait-il une idée ? Là je nage (suis une pive en prog...)

Merci d'avance !
Lassé par la pub ? Créez un compte

Meilleure solution

Expert Programmation

Ouaip ! (Avec le peu d'informations que j'ai, bien-sûr)
Ou alors la clef ou une des sous-clef est ouverte par un processus, ce qui empêche que celle-là soit supprimée.

Tu peux vérifier les droits et les processus ?
Concernant l'exploration des clefs et des process, Marc Russinovitch avait un truc du genre RegistreMonitor... Google devrait t'aider (pas le Earth+, ^^)
Expert Programmation

(Une pive (?) en prog... :??:  en forum aussi :o  Vas me lire le règlement et modifie ton message pour y encadrer ton bout de code avec les balises correctes. )

Pendant ce temps, je regarde ton 'petit' soucis
Expert Programmation

Ah bah, il manque un backslash !

Citation :

Remarks
Specify a key-name by ending strName with a final backslash; leave it off to specify a value-name. Fully qualified key-names and value-names are prefixed with a root key. You may use abbreviated versions of root key names with the RegDelete method. The five possible root keys you can use are listed in the following table.

Source: http://msdn.microsoft.com/en-us/library/293bt9hh%28VS.8...

Salut !

Merci de la réponse et désolé pour la balise manquante....


D'après ce que je lis, voici le script modifié... qui me renvoie la même erreur (Unable to remove reg key, etc etc)

  1. Dim WshShell, pkey
  2.  
  3. Set WshShell = WScript.CreateObject("WScript.Shell")
  4.  
  5. pkey = "HKCU\Software\Google\Google Earth Plus\"
  6.  
  7. WshShell.RegDelete pkey
Expert Programmation

Problème de droits ou de processus ayant réservé la ressource ?


Vas dans le registre par regedit et crée la clef HKEY_CURENT_USER\Sofware\Gougueul\Google Earth Plus et supprime-la par script :
  1. WScript.CreateObject("WScript.Shell" ).RegDelete "HKCU\Software\Gougueul\Google Earth Plus\"

Ca devrait marcher pour la fausse clef. Alors ?

Ben finalement non...

J'ai regardé et aucun process Google n'est lancé, aucun service, quedal.

Les droits sont ok également. De fait, je peux sans autre supprimer la clé depuis le registre sans soucis, il n'y a que depuis le script que ça ne prend pas, alors qu'il est lancé avec le même compte (admin local du poste)

Le code d'erreur est 8007005. J'ai trouvé ça sur experts-exchange :

  1. const HKEY_LOCAL_MACHINE = &H80000002
  2.  
  3. strComputer = "."
  4. strKeyPath = "SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\Printers\RightFax Fax Printer"
  5.  
  6. Set objReg = GetObject("winmgmts:\\" & _
  7. strComputer & "\root\default:StdRegProv")
  8.  
  9. DeleteSubkey strKeypath
  10. wscript.quit
  11.  
  12. Sub DeleteSubkey(strKeyPath)
  13.  
  14. 'Get a string array of subkeys
  15. objReg.EnumKey HKEY_LOCAL_MACHINE, strKeyPath, arrSubkeys
  16.  
  17. If IsArray(arrSubkeys) Then
  18. 'Iterate through each SubKey
  19. For Each strSubkey In arrSubkeys
  20. 'Delete any Subkeys that are in the current subkey
  21. DeleteSubkey strKeyPath & "\" & strSubkey
  22. Next
  23. End If
  24.  
  25. objReg.DeleteKey HKEY_LOCAL_MACHINE, strKeyPath
  26.  
  27. End Sub


Ce qui fonctionne dans le cas de l'exemple parce que cela supprime la clé ET les sous-clés.
Si je trouve quelle est la constante HKCU (par rapport à HKML=&H80000002) Je pense que ça devrait le faire.

...et j'ai trouvé ^-^'

Voilà le code :

  1. const HKEY_CURRENT_USER = &H80000001
  2.  
  3. strComputer = "."
  4. strKeyPath = "Software\Google\Google Earth Plus"
  5.  
  6. Set objReg = GetObject("winmgmts:\\" & _
  7. strComputer & "\root\default:StdRegProv" )
  8.  
  9. DeleteSubkey strKeypath
  10. wscript.quit
  11.  
  12. Sub DeleteSubkey(strKeyPath)
  13.  
  14. 'Get a string array of subkeys
  15. objReg.EnumKey HKEY_CURRENT_USER, strKeyPath, arrSubkeys
  16.  
  17. If IsArray(arrSubkeys) Then
  18. 'Iterate through each SubKey
  19. For Each strSubkey In arrSubkeys
  20. 'Delete any Subkeys that are in the current subkey
  21. DeleteSubkey strKeyPath & "\" & strSubkey
  22. Next
  23. End If
  24.  
  25. objReg.DeleteKey HKEY_CURRENT_USER, strKeyPath
  26.  
  27. End Sub


Merci à toi zeb, tu m'as bien guidé !
Lassé par la pub ? Créez un compte