none
Spécifier compte utilisateur pour OpenRemoteBaseKey RRS feed

  • Question

  • Bonjour,

    Dans le but de simplifier l'administration de poste distant, je souhaites faire un programme pour éditer le registre à distance.
    Le problème, c'est que la fonction OpenRemoteBaseKey lève une exception car je n'ai pas les droits sur la machine distante.
    Comment je peux faire pour exécuter cette fonction avec les droits d'utilisateurs qui vont bien?

    Merci.
    lundi 7 juillet 2008 15:37

Toutes les réponses

  • Bonjour,

    Pourquoi ne pas exécuter ton programme directement avec un profile existant
    MAG+CLIC DROITE et Exécuter en temps que .... (sur ton programme)

    Sinon tu peux aussi faire un flag dans ton programme et le re-starté avec un autre profile.

    j'ai aussi fait un programme en VB .Net 2005/2008 regarde ça :
    http://www.troxsa.info/index.php?option=com_content&task=view&id=71&Itemid=2

    une autre proposition est d'inscrire un nouvelle administrateur temporaire sur la machine local puis l'effacer par la suite !

    Cordialement,
    Troxsa.info
    lundi 7 juillet 2008 18:33
  • Et non malheureusement je ne peux pas créer de compte sur la machine et je ne peux pas faire de run as car en faite dans le programme l'utilisateur choisis tout les comptes pour lesquelles une clé données va être modifié.

    Ta source à l'air très intéressante. Je l'essayerais, mais j'aurais aimer spécifié quelque part l'utilisateur, car je dois écrire dans la branche "CURRENT_USER"

    Merci

    lundi 7 juillet 2008 18:56
  • Re Smile

    Pour spécifier un compte il faut charger la ruche de l'utilisateur puis faire la modification nécessaire, tu trouveras de nombreuse source sur le net notamment sur le site Microsoft sur le comment faire pour charger une ruche (registre) d'un utilisateur

    Je n'est j'aimais fait le chargement d'une ruche spécifique mais tu y arriveras facilement je pense, d'après ce que j'ai pu voir c'est pas aussi sorcier que ça !

    Cordialement,
    Troxsa.info
     
    lundi 7 juillet 2008 20:32
  • Tu parle de charger la ruche par mon programme pour ensuite travailler dedans? ou la monté dans regedit? ce qui ne m'arrange pas du tout.
    mardi 8 juillet 2008 14:02
  •  TroXsA A écrit:
    Bonjour,

    Pourquoi ne pas exécuter ton programme directement avec un profile existant
    MAG+CLIC DROITE et Exécuter en temps que .... (sur ton programme)

    Sinon tu peux aussi faire un flag dans ton programme et le re-starté avec un autre profile.

    j'ai aussi fait un programme en VB .Net 2005/2008 regarde ça :
    http://www.troxsa.info/index.php?option=com_content&task=view&id=71&Itemid=2

    une autre proposition est d'inscrire un nouvelle administrateur temporaire sur la machine local puis l'effacer par la suite !

    Cordialement,
    Troxsa.info


    J'ai essayer le code du programme VB, mais le programme plante directement sur OpenRemoteBaseKey, il ne passe même pas par le code qui gère les droits d'accès
    mardi 8 juillet 2008 14:18
  • Je resume le tout !

     

    Tu souhaite (oui je dit "tu" malgrer quont ce connais pas, le tu es plus facileSmile ) écrire dans un registre distant avec  le OpenRemoteBaseKey avec le profile utilisateur en cour ce session et en empruntant son identité.

    Il y a pas 50 solutions que je connais alors je vais tous les donnés.

    1-      Envoyer un fichier  sur le poste utilisateur en local, exemple C:\Windows\temp\MonFichier.Reg avec un New Process  tu lui demande de démarrer le fichier Reg en mode silence, ça donne regedit /s C:\Windows\temp\MonFichier.Reg, il existe aussi le Win32_Process pour démarrer un process a distance (http://msdn.microsoft.com/en-us/library/aa389388.aspx) dans la même lancé on peux demander a Visual Studio .Net (Vb) de générer une classe managée dans la partie explorateur serveur (il me semble).

    2-      Dans la même optique que la première solution on peu directement utiliser la class Win32_Process et dans Run lui indiquer d’utilisé CMD reg /add (Win32_Process demande à être identifié par un compte utilisateur existant sur la machine distante, voir Impersonate Level pour les droits d’emprunt d’identité temporaire)

    3-      Effectivement il y a cette fameuse option OpenRemoteBaseKey de la class Microsoft.Win32 qui ne prend apriori pas les paramètres de connexion avec un autre compte runas il me semble aussi qu’on peu utiliser Impersonate Level pour ce cas là.

    4-      J’ai déjà dit aussi qu’on peut chargé la ruche utilisateur dans son registre et faire les modifications necesssaire, mais cette solution ne te conviens pas trop on dirait ! dsl

    5-      Le code que je tes donné précédemment a pourtant bien fonctionner pour moi a l’époque quand j’en ai eu besoin, ce code ma servi pour modifier une clef dans le registre ou sur cette clef il y avait que les droits système et donc fallu m’ajouté les autorisations nécessaire pour faire les modifications.

    Voila ce sont les seules connaissances que j’ai en programmation et en connaissance du poste utilisateur

    Voila une source qui me plait pas mal, j’les pas encore testé sur une branche HKCU … http://www.experts-exchange.com/OS/Microsoft_Operating_Systems/Windows/XP/Q_22755734.html

    J’ai vu aussi qu’il existait RegistryPermission et RegistryPermissionAccess qui pourrais faire des choses intéressante.

    Cordialement,

     

     

     

     

    mardi 8 juillet 2008 20:07
  • Alors déja, merci beaucoup de t'interesser autant à mon problème.

     

    "écrire dans un registre distant avec  le OpenRemoteBaseKey avec le profile utilisateur en cour ce session et en empruntant son identité"

    En faite non, se n'est pas ça. Voici comment cela va se passer:

    Mon programme est lancé par un administrateur, dans le programme il choisis les IP des postes distants ainsi que les utilisateurs pour lesquelles ils veut modifier le registre, par exemple:

    Modifié la clé "HKEY_LOCAL_MACHINE\SOFTWARE\TOTO\Settings" sur les postes:

    10.4.1.1

    10.4.1.2

    Pour les comptes "toto1" & "toto2" (ces comptes étant présent sur les postes 10.4.1.1 et .2)

     

    Pour ce que tu ma dit:

     

    Solutions:

    1. ça pourrait être une solution effectivement, si je peux passer par des commandes pourquoi pas

    2. idem que 1 du coup

     

    Tes autres solutions je vais creusé voir si en jouant avec les permissions j'obtient quelque chose.

     

    Cordialement,

     

    mercredi 9 juillet 2008 07:13
  • La classe Win32_Process n'existe pas!

    mercredi 9 juillet 2008 07:16
  • Salut (et oui encore moi, je ne vais pas lâcher le morceau lol)

     Tuizi A écrit:

    La classe Win32_Process n'existe pas!

    Create Method of the Win32_Process Class ---> http://msdn.microsoft.com/en-us/library/aa389388.aspx

     Ce n'est pas une classe de type Microsoft.Management.Win32_Process non c'est pas comme ça que ça fonctionne voir --> WMI Win32_Process Methode Create / http://www.troxsa.info/index.php?option=com_content&task=view&id=83&Itemid=2

    • Proposé comme réponse Troxsa2 samedi 12 février 2011 13:31
    lundi 14 juillet 2008 15:15