IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBScript Discussion :

[HTA] Parcourir base de registre - UBound


Sujet :

VBScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 21
    Par défaut [HTA] Parcourir base de registre - UBound
    Bonjour à tous,

    Je me permets de demander votre aide pour un script qui parcours ma base de registre.

    Ce script fonctionne en .vbs, mais je n'arrive pas à l'intégrer dans mon HTA, j'obtiens une erreur :
    Objet requis : Wscript
    Voici le script en question :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    		Const HKEY_LOCAL_MACHINE = &H80000002
     
     
    		strComputer = "."
     
    		Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _ 
    		    strComputer & "\root\default:StdRegProv")
     
    		strKeyPath = "SOFTWARE\Logiciel\"
     
    		oReg.EnumValues HKEY_LOCAL_MACHINE, strKeyPath, _
    		    arrValueNames, arrValueTypes
     
    		For i=0 To UBound(arrValueNames)
    		    Wscript.Echo "Value Name: " & arrValueNames(i)  
    		Next
    C'est la ligne 14 qui pose problème, avec le UBound.

    Pourriez-vous m'aider ?

    Je vous remercie.

  2. #2
    Rédacteur
    Avatar de omen999
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 302
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 302
    Par défaut
    bonjour,
    C'est la ligne 14 qui pose problème, avec le UBound.
    je dirais plutôt la ligne 15...
    l'objet root WScript n'est pas disponible en dehors de l'environnement WSH
    utilise à la place la fonction MsgBox
    nomen omen, nemo non omen - Consultez la FAQ VBScript et les cours et tutoriels VBScript
    le plus terrible lorsqu'une voiture renverse un piéton, c'est que ce sont les freins qui hurlent. (ramón)
    pas de questions techniques par mp

  3. #3
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 420
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 420
    Par défaut
    Un peu plus ...

    La clé Logiciel est peut-être inexistante dans le registre; et même si elle y est, elle ne contient aucune valeur !!! d'où le message d'erreur.

    Essaie avec ce
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Const HKEY_LOCAL_MACHINE = &H80000002
     
    strComputer = "."
     
        Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _ 
        strComputer & "\root\default:StdRegProv")
    	strKeyPath = "SOFTWARE\Microsoft\Internet Explorer\" ' ou bien "SOFTWARE\Macromedia\FlashPlayer\"
    	oReg.EnumValues HKEY_LOCAL_MACHINE, strKeyPath, arrValueNames, arrValueTypes
    	If not IsNull(arrValueNames) then 
    	   For i=0 To UBound(arrValueNames)
    	      S =S & "Value Name: " & arrValueNames(i)  & vbcrlf
    	   Next
            End If
       Msgbox S
    EDIT : Quelqu'un m'a devancé et répondu au moment où je rédigeais ma réponse .... n'empêche que cela peut être utile !!!!
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
    Vous pouvez consulter mes contributions
    Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

  4. #4
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 21
    Par défaut
    C'est très utile l'autodidacte, merci !

    Excusez-moi mais j'ai encore une question à vous poser..

    Comment peut-on rajouter la récupération du contenu de la valeur des différentes chaînes contenues dans
    SOFTWARE\Logiciel\
    ?

    Existe-t-il un argument que l'on peut rajouter à cette ligne ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    S =S & "Value Name: " & arrValueNames(i)  & vbCrLf

    J'ai en effet, à l'intérieur de cette clef de registre, différentes chaînes qui correspondent à différentes étapes, et qui contiennent la valeur "oui" ou "non".
    J'ai essayé avec cette fonction, mais ça ne fonctionne pas, et cela me semble compliqué.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    reponse = WshShell.RegRead ("HKLM\Software\Logiciel\" &etape)
    (où étape correspond au nom de la chaîne, que j'ai réussi à récupérer grâce à vos aides précédentes.)

    Je vous remercie encore pour votre aide

  5. #5
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 420
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 420
    Par défaut
    Voici comment récupérer les données des valeurs en question :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Const HKEY_LOCAL_MACHINE = &H80000002
     
    strComputer = "."
        Set WshShell = CreateObject("Wscript.Shell")
        Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _ 
        strComputer & "\root\default:StdRegProv")
    	strKeyPath = "SOFTWARE\Microsoft\Internet Explorer\" ' ou bien "SOFTWARE\Macromedia\FlashPlayer\"
    	oReg.EnumValues HKEY_LOCAL_MACHINE, strKeyPath, arrValueNames, arrValueTypes
    	If not IsNull(arrValueNames) then 
    	   For i=0 To UBound(arrValueNames)
    	     ' S =S & "Value Name: " & arrValueNames(i)  & vbcrlf
    		  Reponse = WshShell.RegRead("HKLM\SOFTWARE\Microsoft\Internet Explorer\" & arrValueNames(i))
    		  If arrValueNames(i) <> "" Then MsgBox arrValueNames(i) & " => " & Reponse
    	   Next
        End If
    	'MsgBox S
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
    Vous pouvez consulter mes contributions
    Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

  6. #6
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 21
    Par défaut
    Merci beaucoup pour ton aide.


    Je pense rajouter quelque chose de ce genre pour écrire les résultats en fichier texte.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set f = fso.OpenTextFile("c:\temp\W7.log", ForAppend,true)
     
    etape = arrValueNames(i)
    Reponse = WshShell.RegRead("HKLM\SOFTWARE\Microsoft\Internet Explorer\" & arrValueNames(i))
     
    f.writeLine("/****************/")
    f.WriteLine(etape)
    f.WriteLine(reponse)
    f.writeLine("")
    Merci encore,
    Cordialement.

  7. #7
    Membre expérimenté
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Novembre 2011
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Novembre 2011
    Messages : 163
    Par défaut
    Salut Olivierm67 !

    Effectivement, tel que tu l'as posté, ton code fonctionne ...
    A part peut-être la gestion de l'absence de clé correspondante ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Const HKEY_LOCAL_MACHINE = &H80000002
     
    strComputer = "."
    Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\default:StdRegProv")
    strKeyPath = "SOFTWARE\Logiciel\"
    oReg.EnumValues HKEY_LOCAL_MACHINE, strKeyPath, arrValueNames, arrValueTypes
     
    If Not IsArray( arrValueNames ) Then
    arrValueNames = Array( "" )
    arrValueTypes = Array( REG_SZ )
    End If
     
    For i= 0 To UBound(arrValueNames)
    Wscript.Echo "Value Name: " & arrValueNames(i)  
    Next
    Pourrais-tu poster le code HTA plutôt ? Ce serait plus facile pour t'aider !

    EDIT : (Post simultané) Ah oui, bien vu Omen, c'est sûrement ça !

  8. #8
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 21
    Par défaut
    Bonjour omen999 et Cachlab,
    Merci pour vos réponses !

    Effectivement, c'est bien
    Wscript.echo
    qui pose problème

    Je l'ai remplacé par une affectation de variable.
    Il me reste ensuite à écrire dans un fichier texte le contenu de chaque clef de registre avec son nom.

    Merci pour la gestion d'erreurs.
    Je posterai la fonction ici une fois finie

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 02/12/2010, 22h23
  2. Réponses: 1
    Dernier message: 26/07/2007, 10h57
  3. [Windows]accès base de registre windows
    Par Greg01 dans le forum API standards et tierces
    Réponses: 27
    Dernier message: 05/06/2007, 15h14
  4. Parcourir Base de Registre
    Par Ben_Le_Cool dans le forum Delphi
    Réponses: 3
    Dernier message: 17/07/2006, 17h19
  5. Utilisez vous la base de registres ?
    Par gRRosminet dans le forum C++Builder
    Réponses: 8
    Dernier message: 04/06/2002, 13h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo