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

Modules Perl Discussion :

Utiliser TieRegistry sur des clés contenant des clsid ?


Sujet :

Modules Perl

  1. #1
    Candidat au Club
    Inscrit en
    Juin 2005
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Utiliser TieRegistry sur des clés contenant des clsid ?
    Bonjour,

    Je commence tout juste à écrire des scripts en Perl pour automatiser des installations de logiciels.
    Je vérifie les logiciels installés en listant les clées contenues dans:

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall

    Le code ne marche que pour les clés ayant un nom d'application "en clair".
    Les logiciels identifiés par leur clsid ne sont pas listés. Quelqu'un aurait une idée de contourner le problème ? J'imagine que ce sont les signes {} qui ne passent pas ...

    (exemple : GanttProject <=> {06DD33C9-F258-4681-9269-FF0283D7C4EA} )

    Voici mon extrait de code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    # Open Registry keys:
    use Win32::TieRegistry ( Delimiter=>"/", ArrayValues=>1 );
        $Registry->Delimiter("/");                  # Set delimiter to "/".
        $swKey= $Registry->{"LMachine/Software/"};
        $uninstallKey= $swKey->{"Microsoft/Windows/CurrentVersion/Uninstall/"};
    # Scan Uninstall key
    foreach $subKey ( $uninstallKey->SubKeyNames  ) {
        # Get value data:
        $valueString= $subKey->GetValue("DisplayName");
        print "Found registry key $UninstallKey->SubKeyNames = $valueString \n";
    Merci d'avance !

    Balises [ code ] et [ /code ] ajoutées par 2Eurocents.

  2. #2
    Membre actif
    Inscrit en
    Février 2005
    Messages
    167
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 167
    Points : 203
    Points
    203
    Par défaut
    qu'est-ce qui ne marche pas exactement ? Je crois me rappeler avoir fait un truc comme ca dans le passe, mais je n'ai pas de machine windows sous la main a l'instant. En tout cas je ne vois pas pourquoi les accoladess viendraient compliquer la donne. Tu lances le programme depuis un compte admin ?

    N

  3. #3
    Candidat au Club
    Inscrit en
    Juin 2005
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Ouvrir une clé de registre en lecture seule
    nematoad,

    Tu avais raison.
    Les clés que je n'arrivais pas à lire n'étaient accessibles qu'en lecture.
    Et ces clés (je ne pense pas que ce soit un coïncidence) ont des noms codés sous forme de clsid.
    Je ne me suis pas méfié car je pensais ne faire que de la lecture, mais il fallait spécifier l'ouverture de la clé en lecture seule.
    - Voici un exemple qui fonctionne sans avoir besoin des droits administrateurs pour ceux que cela interesse:
    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
     
    # Open Registry keys: 
    use Win32::TieRegistry ( Delimiter=>"//", ArrayValues=>1 ); 
    use Win32::TieRegistry qw(:KEY_);
        $LMKey= $Registry->Open( "LMachine", {Access=>KEY_READ(),Delimiter=>"//"} )
          or  die "Can't open HKEY_LOCAL_MACHINE key: $^E\n";
        $uninstallKey= $LMKey->{"Software//Microsoft//Windows//CurrentVersion//Uninstall"} or  die "Can't open Software/Microsoft/Windows/CurrentVersion/Uninstall key: $^E\n";
     
    # Scan Uninstall subkeys 
    foreach $subKey ( $uninstallKey->SubKeyNames  ) { 
        print "Application subkey is: \"$subKey\" \n"; 		
        $appKey= $uninstallKey->{$subKey} or print "\"$subKey\",\"ERROR: $^E\n";
        # Get value data:  
        $valueString= $appKey->GetValue("DisplayName"); 
        print "DisplayName for \"$subKey\" is \"$valueString\" \n";
    Merci.

  4. #4
    Membre actif
    Inscrit en
    Février 2005
    Messages
    167
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 167
    Points : 203
    Points
    203
    Par défaut
    voila une bonne nouvelle. Comme quoi on apprend tout les jours... je ne savais même pas qu'on pouvait ouvrir le registry en lecture seule.

    En attendant, je crois que tu peux marquer ce thread comme étant résolu :)

    N

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 161
    Points : 89
    Points
    89
    Par défaut
    yop, comme j'ai un ti probleme sur le meme module je ne recreer pas de nouveau topic.Si y a besoin je le ferai

    Enfait j'aimerai lancer un script perl a chaque demarrage de mon ordinateur.Par exemple un script qui efface ce que j'ai dans mon fichiers temporary internet files etc...

    Petit probleme, je n'arrive vraiment pas a comprendre ce module, si quelqu'un pourrai m'aider, je vous en remercie.

    Bonne journée a tous 8)

  6. #6
    Membre actif
    Inscrit en
    Février 2005
    Messages
    167
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 167
    Points : 203
    Points
    203
    Par défaut
    bon ben, continuons la discussion ici, pas de problème..

    Ce qui me tracasse pourtant, est que je suis incapable de trouver le lien entre le module Tie::Registry et l'envie de lancer un script au démarrage. Pourquoi, s'il s'agit de Windows, ne pas le mettre dans le dossier démarrage ?

    A moins que tu ne veuilles le mettre dans la liste des taches a démarrer au moment de bouter Windows, qui se trouve dans je ne sais plus quelle clé.

    Mais bon, expliques ton problème et après on verra :)

    N

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 161
    Points : 89
    Points
    89
    Par défaut
    justement le but c'est de ne rien toucher dans le fichier de demarrage et que le script perl ajoute de lui meme une clé pour pouvoir s'auto lancer.
    Tu peux lancer comme ca pleins de petit programmes qui automatise des taches sur ton pc en un simple clic.Ou sinon imaginons un firewall ecris en perl et tu veux qu'il se lance automatiquement sans rien que tu ai besoin de faire.tu mets dans une sub l'ajout de la key.Faudra juste modifier le nom mais bon c'est pas le plus chiant.loool mais c'est vrai que c'est assez complexe de comprendre ce module et je n'arrive pas a trouver un site ou un script qui utilise bien ceci.

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

Discussions similaires

  1. Réponses: 31
    Dernier message: 19/09/2011, 10h37
  2. Réponses: 1
    Dernier message: 18/08/2011, 10h21
  3. Réponses: 8
    Dernier message: 29/10/2008, 18h02
  4. Réponses: 3
    Dernier message: 01/08/2006, 12h32
  5. Tri sur une chaîne de caractères contenant des nombres
    Par arnaud_verlaine dans le forum Langage SQL
    Réponses: 2
    Dernier message: 23/05/2006, 11h52

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