Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
WMI remote registry zugriff klapt nicht
=>- techno_prog -<=
myCSharp.de - Member



Dabei seit:
Beiträge: 67
Herkunft: Schwabach

Themenstarter:

WMI remote registry zugriff klapt nicht

beantworten | zitieren | melden

Hi ich hab versucht über wmi die registry von einen anderen rechner auszuhlesen,
das programm wird auf nen Enterprise server 2003 betriben mit eigener domain,
der rechner auf den ich zugreifen möchte ist in der domain angemeldet

ich bekomme aber immer die Fehlermeldung:
RPC SERVER nicht erreichbar (Ausnahme von HRESULT: 0x800706BA)

Auf beiden Maschinen ist aber der RPC dienst gestartet.

Hier ist mal der code vieleicht kann mir einer sagen woran das liegt und
was die fehlermeldung zu bedeuten hat


                       const uint HKEY_LOCAL_MACHINE = 0x80000002;
                      
                        const string userName = "admin";
                        const string password = "passwort"; 

                        const string computerName = "PC1";// rechner auf den ich zugreifen will

                        const string managementPath = @"\\" + computerName + @"\root\default";

                        ConnectionOptions options = new ConnectionOptions();

                        options.Authentication = AuthenticationLevel.Default;

                        options.Impersonation = ImpersonationLevel.Default;
                        
                        options.EnablePrivileges = true;
                        options.Locale = "MS_407"; // für Deutschland

                        options.Username = userName;
                        options.Password = password;

                      
                        ManagementScope ms = new ManagementScope(managementPath, options);

                        ms.Connect();

                        ManagementClass wmiRegistry = new ManagementClass(ms, new ManagementPath("StdRegProv"), new ObjectGetOptions(ms.Options.Context));

                        GetStringValue() erzeugen
                        ManagementBaseObject p = wmiRegistry.GetMethodParameters("GetStringValue");

                        p["hDefKey"] = HKEY_LOCAL_MACHINE;
                        p["sSubKeyName"] = @"SOFTWARE\test";
                        p["sValueName"] = "porjekt";

                        ManagementBaseObject ProfilesDirectory = wmiRegistry.InvokeMethod("GetStringValue", p, null);

                        p["sValueName"] = "AllUsersProfile";
                        ManagementBaseObject AllUsersProfile = wmiRegistry.InvokeMethod("GetStringValue", p, null);

                        p["sSubKeyName"] = @"SYSTEM\test";
                        p["sValueName"] = "Standart";
                        ManagementBaseObject ComputerName = wmiRegistry.InvokeMethod("GetStringValue", p, null);

                        
                        Console.WriteLine("\"{0}\\{1}\" auf {2}", ProfilesDirectory["sValue"], AllUsersProfile["sValue"], ComputerName["sValue"]);

schon mal im voraus dank
So fals ihr Rechtschreibfehler endeckt dürft ihr Sie gerne behalten
Bin nämlich legastheniker und hab von denen genügend X(
private Nachricht | Beiträge des Benutzers
telnet
myCSharp.de - Member



Dabei seit:
Beiträge: 330

beantworten | zitieren | melden

Warum verwendest du denn nicht einfach


RegistryKey key = RegistryKey.OpenRemoteBaseKey(RegistryHive.LocalMachine, Zielhost);
key.OpenSubKey(Pfad).GetValue(Schlüssel);

Musst vorher noch mit


using Microsoft.Win32;

den Namespace einbinden.

Wesentlich einfacher und v.a. performanter!!!

Grüße
private Nachricht | Beiträge des Benutzers
=>- techno_prog -<=
myCSharp.de - Member



Dabei seit:
Beiträge: 67
Herkunft: Schwabach

Themenstarter:

beantworten | zitieren | melden

ich soll des mittels WMI verwirklichen, warum so weis ich net aber trotzdem danke
So fals ihr Rechtschreibfehler endeckt dürft ihr Sie gerne behalten
Bin nämlich legastheniker und hab von denen genügend X(
private Nachricht | Beiträge des Benutzers
=>- techno_prog -<=
myCSharp.de - Member



Dabei seit:
Beiträge: 67
Herkunft: Schwabach

Themenstarter:

beantworten | zitieren | melden

noch ne kurze frage telnet

wie kann ich wenn ich des so mach dan sagen mit welchen namen ich mir anmelden will beim anderen rechner?
So fals ihr Rechtschreibfehler endeckt dürft ihr Sie gerne behalten
Bin nämlich legastheniker und hab von denen genügend X(
private Nachricht | Beiträge des Benutzers
telnet
myCSharp.de - Member



Dabei seit:
Beiträge: 330

beantworten | zitieren | melden

Hab den Thread hier grad wiedergefunden:
Einen Benutzernamen / Kennwort übergeben geht nicht so einfach (leider) !
Du musst das Programm im Kontext eines Anwenders ausführen, der auf der Remote-Maschine die notwendigen Rechte hat.
Bei mir hier hab ich das so gelöst:
An der Domäne gibts nen Serviceaccount, der auf allen zu prüfenden Rechnern Admin-Rechte hat.
Das Programm, mit dem ich die Keys abfrage, starte ich aus meinem Kontext und über Impersonation wechsle ich den Benutzerkontext auf den Serviceaccount.
Wenn ich mit auslesen fertig bin mache ich die Impersonation einfach wieder rückgängig.

Grüße
private Nachricht | Beiträge des Benutzers