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

Macros et VBA Excel Discussion :

Lecture base de registre distante


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur validation
    Inscrit en
    Avril 2018
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur validation

    Informations forums :
    Inscription : Avril 2018
    Messages : 24
    Par défaut Lecture base de registre distante
    Bonjour,
    J'ai réellement cherché, mais je ne trouve que de vieux posts de 2006.
    Et rien n'est jamais complet si on doit ajouter une référence ou non.

    J'ai besoin de lire plusieurs clefs de la base de registre de plusieurs serveurs.

    Je suis désolé, je ne parviens pas à trouver une réponse complète.
    Merci pour votre aide.

  2. #2
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 235
    Par défaut
    Hello,
    essai ce code :
    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_CURRENT_USER = &H80000001
    Sub TestME()
        Dim temp As Object
        Dim strComputer As String
        Dim rPath As String
        Dim arrSubKeys()
        Dim strAsk
        strComputer = "localhost"
        Set temp = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _
        strComputer & "\root\default:StdRegProv")
        rPath = "Software\Microsoft\"
        temp.EnumKey HKEY_CURRENT_USER, rPath, arrSubKeys
        For Each strAsk In arrSubKeys
            Debug.Print strAsk
        Next
    End Sub
    Cela vient lire la clé de registre Software\Microsoft\ sur l'ordinateur local (localhost)
    Remplace le strComputer par le nom du serveur ( genre \\MonServeur ou par son adresse I.P ex :\\192.161.0.23) . Si cela ne fonctionne pas, il peut y avoir, un problème de communication, de droits, etc...

    Ami calmant, J.P

  3. #3
    Membre averti
    Homme Profil pro
    Ingénieur validation
    Inscrit en
    Avril 2018
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur validation

    Informations forums :
    Inscription : Avril 2018
    Messages : 24
    Par défaut
    Bonjour,
    Le départ de ma recherche de valeur de clefs est : "HKEY_USERS \ .Default"
    J'ai essayé d'adapter le code mais cela ne fonctionne pas. A savoir, le serveur distant sur lequel je veux lire la base des registres, nécessite un login et mot de passe pour ouvrir une session dessus.
    Mon code ne doit-il pas inclure ces éléments?

    Merci d'avance si vous pouvez m'aider.

    Le code adapté (Retour de l'exécution : "Le serveur distant n'existe pas ou n'est pas disponible") :
    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
    17
    18
    19
    Sub TestME()
        Dim temp As Object
        Dim strComputer As String
        Dim rPath As String
        Dim arrSubKeys()
        Dim strAsk
    '    strComputer = "localhost"
     
        strComputer = "XX.XX.XXX.XXX"
     
        Set temp = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\default:StdRegProv")
        rPath = "Software\<Nom de mon dossier>\<Nom de ma Clef>\"
     
        temp.EnumKey "HKEY_USERS \ .Default", rPath, arrSubKeys
        For Each strAsk In arrSubKeys
            Debug.Print strAsk
        Next
     
    End Sub

  4. #4
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 235
    Par défaut
    Hello,
    Citation Envoyé par StefLedoc Voir le message
    J'ai essayé d'adapter le code mais cela ne fonctionne pas. A savoir, le serveur distant sur lequel je veux lire la base des registres, nécessite un login et mot de passe pour ouvrir une session dessus.
    Si le réseau est en domaine, il faut voir avec l'administrateur réseau si il y a moyen d'avoir un utilisateur commun à toutes les machines pour lire les clés de registres. En étant loggué sur une machine avec cet utilisateur, on pourra accéder aux autres machines sans demande de mot de passe. Mettre des comptes et des mots de passe en dur dans du code n'est pas du tout conseillé pour la sécurité ou alors il faut saisir le compte et le mot de passe pendant l'exécution du programme.
    Ami calmant, J.P

  5. #5
    Membre averti
    Homme Profil pro
    Ingénieur validation
    Inscrit en
    Avril 2018
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur validation

    Informations forums :
    Inscription : Avril 2018
    Messages : 24
    Par défaut
    Je vais en effet voir avec l'administrateur mais je ne pense pas que ce soit l'erreur de mon programme.
    J'ai déjà effectué la fonction faisant presque pareil, se connecter, puis rapatrier des fichiers. Sur le même serveur.

    Je vais faire vérifier surtout les valeurs d'adresse.

    Pour ce qui est d'avoir des données en dur, oui je suis d'accord. Je n'ai mis en dur que sur l'exemple copié sur le forum. Trop long à adapter avec l'ensemble du process des variables de mon projet.

  6. #6
    Membre averti
    Homme Profil pro
    Ingénieur validation
    Inscrit en
    Avril 2018
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur validation

    Informations forums :
    Inscription : Avril 2018
    Messages : 24
    Par défaut Ca avance...
    L'adresse URL était mauvaise.
    Mon programme, modifié via une source précédente dans ce forum, pour intégrer le login/mot de passe se connecte.
    J'ai une erreur du type
    Erreur automation
    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
    17
    18
    19
    20
    21
    Public Function GetRegKeyValue() As String
     
    Dim sUserName As String, sPass As String, strkeypath As String, strValueName As String, sComputerIP As String
    Dim SWBemlocator As Object, objWMIService As Object, objRegistry As Object
     
    Dim sNomClefTMP As String, sValeurClefTMP As String
     
    sUserName = "<Domaine>\<Login>"
    sPass = "Pass"
    sComputerIP = "XX.XX.XXX.XXX"
     
    strkeypath = "Software\XXX\YYY\ZZZ\Version"
    sNomClefTMP = "NomClef"
     
    Set SWBemlocator = CreateObject("WbemScripting.SWBemlocator")
    Set objWMIService = SWBemlocator.ConnectServer(sComputerIP, "\root\default", sUserName, sPass)
    Set objRegistry = objWMIService.Get("StdRegProv")
    Debug.Print objRegistry.GetStringValue("HKEY_USERS\.DEFAULT\", strkeypath, sNomClefTMP, sValeurClefTMP) --> Erreur d'exécution : -2147217403 (80004 1005) / Erreur Automation
    Debug.Print sValeurClefTMP
     
    End Function
    --> Des idées s'il vous plait?

Discussions similaires

  1. [C#] Ecriture/Lecture base de registre
    Par Shifty_ dans le forum C#
    Réponses: 4
    Dernier message: 17/04/2009, 13h27
  2. Lecture base de registre client
    Par locs dans le forum Général Conception Web
    Réponses: 3
    Dernier message: 02/02/2007, 10h03
  3. Comment acceder à une base de registre distante.
    Par ced600 dans le forum VBScript
    Réponses: 3
    Dernier message: 24/08/2006, 15h00
  4. [C#] Lire une base de registre distante
    Par Scorff dans le forum C#
    Réponses: 2
    Dernier message: 08/11/2005, 14h39
  5. problème de lecture base de registre
    Par pafounet3 dans le forum MFC
    Réponses: 10
    Dernier message: 31/12/2003, 14h06

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