Page 1 sur 1

[..] Lire une valeur de la base de registre PC distant

Posté : jeu. 02 juil. 2015 12:50
par Hugues
Bonjour,

Je souhaiterai lire dans la base de registre de pc pour récupérer la version du processeur.
Je liste l'adresse IP et la mnémonique dans un fichier ini.
J'ai trouvé ce code sur Internet qui me convient.
Je ne sais pas comment faire pour lire à distance sur la base de registre d'un autre pc... Je ne sais pas si c'est autorisé...
Dans mon code je pense qu'il manque user et mot de passe car dans le cas presént, il me renvoie aucune valeur...

Merci par avance.
► Afficher le texte

Re: [..] Lire une valeur de la base de registre PC distant

Posté : jeu. 02 juil. 2015 12:57
par TopXm
Salut,

De mémoire tu dois aussi avoir un service d'accès à distance au registre qui est rarement démarré.

Re: [..] Lire une valeur de la base de registre PC distant

Posté : jeu. 02 juil. 2015 13:13
par Hugues
Je dois dire que je suis un peu sec là...

Re: [..] Lire une valeur de la base de registre PC distant

Posté : jeu. 02 juil. 2015 13:22
par TopXm
:) ça se trouve je me gourre complet, mais c'est de ça dont je parle : Base de registre distante

Re: [..] Lire une valeur de la base de registre PC distant

Posté : jeu. 02 juil. 2015 13:36
par Hugues
Je sais pas...

Mes PC sont sous WIN XP. Là c'est peut-être moi qui fait fause route, mais on ne pourrait pas utiliser le User et mot de passe pour avoir accès à la base de registre avec un RegRead? Ou bien faut-il passer avec un WMI?

Désolé c'est pas trop mon domain tout ça lol.

Re: [..] Lire une valeur de la base de registre PC distant

Posté : jeu. 02 juil. 2015 14:24
par jguinch
En plus du service d'accès à distance au registre, il faut les droits suffisants (admin) pour se connecter à la machine distante.
Dans ce cas, il faut exécuter le script avec un autre compte.
Si c'est pas possible d'exécuter le script avec un autre compte, il faudra voir du côté de WMI (recherche ConnectServer + StdRegProv)


Edit : regarde ça, ça ressemble un peu à ce que tu veux faire : https://www.autoitscript.com/forum/topi ... different/

Re: [..] Lire une valeur de la base de registre PC distant

Posté : jeu. 02 juil. 2015 15:42
par Hugues
Oui j'ai 2 types d'accès sur mes IPC, 1 compte utilisateur et un compte administrateur.

Re: [..] Lire une valeur de la base de registre PC distant

Posté : ven. 03 juil. 2015 14:49
par Hugues
J'ai essayé les 2 scripts, mais ça ne fonctionne pas...

Re: [..] Lire une valeur de la base de registre PC distant

Posté : lun. 06 juil. 2015 11:11
par jguinch
En fait, il suffit de se connecter aux partages administratif du PC distant (en spécifiant le login/mdp) :

Code : Tout sélectionner

DriveMapAdd("", "\\SERVER\IPC$", 0, "administrateur", "XXXXXX")
et après RegRead("\\SERVER\HKLM\....")


Sinon, j'ai fouiné un peu et j'ai lu un truc intéressant sur MSDN à propos de RegConnectRegistry (_WinAPI_RegConnectRegistry)
MSDN a écrit :If the current user does not have proper access to the remote computer, the call to RegConnectRegistry fails. To connect to a remote registry, call LogonUser with LOGON32_LOGON_NEW_CREDENTIALS and ImpersonateLoggedOnUser before calling RegConnectRegistry.
Donc à priori ça fonctionne en utilisant l'appel à LogonUser puis ImpersonateLoggedOnUser avant de faire le RegRead
► Afficher le texte

Re: [..] Lire une valeur de la base de registre PC distant

Posté : lun. 06 juil. 2015 13:27
par Hugues
J'ai fait ça, je ne sais pas si la structure est correct... Ca à l'air de fonctionner ^^ Je vais regarder ta solution, elle à l'air beaucoup plus propre ^^

J'espère que cela ne risque pas d'endommager la base de registre de mes PCs... Sinon je vais me faire appeler Marcel lol
► Afficher le texte

Re: [..] Lire une valeur de la base de registre PC distant

Posté : lun. 06 juil. 2015 13:48
par davzell
moi je l'avais fait avec des commandes dos, @compspec le tout en RunAs comme ca tu peux t'authentifier

Code : Tout sélectionner

 $DOS = RunAs($user, $Domain, $mdpPC, 0, @ComSpec & " /k reg query \\" & $NomPC & "\HKLM\SYSTEM\CurrentControlSet\Services\uvnc_service /v ImagePath", "", @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
ensuite fallait récupérer les données lu avec la fonction StdoutRead