Discussion:
Auslesen der Registry auf Remote Rechner
(zu alt für eine Antwort)
Donic
2005-07-06 13:19:04 UTC
Permalink
Ich möchte das Hintergrundbild auf einem remote Rechner abschalten.
Dazu muss ich den folgenden Registryschlüssel auf der Remote Maschine öffnen.
HKEY_CURRENT_USER\Control Panel\Desktop

Das auslesen ist technisch kein Problem aber leider bekomme ich nicht den
besagten Schlüssel ich lande immer auf dem Default user.
Dim key As Microsoft.Win32.RegistryKey
Dim maschine As Microsoft.Win32.RegistryKey
Dim str1 As String = "Control Panel\Desktop"
If Rechnername <> "" Then
key =
maschine.OpenRemoteBaseKey(Microsoft.Win32.RegistryHive.CurrentUser,
Rechnername).OpenSubKey(str1, True)
'key = key.OpenSubKey(str1, True)
fWallpaper = key.GetValue("wallpaper")
key.SetValue("wallpaper", "")
fScreensaver = key.GetValue("SCRNSAVE.EXE")
key.SetValue("SCRNSAVE.EXE", "")
Return True
Else
Return False
End If
getvalue gibt immer leer zurück ("")
und wenn ich einen Wert reinschreibe landet der bei
HKEY_USERS\.DEFAULT\Control Panel\Desktop
Weiss einer eine Lösung das ich meinen
HKEY_CURRENT_USER\Control Panel\Desktop
erreiche?
Thomas Scheidegger [MVP]
2005-07-06 13:53:27 UTC
Permalink
Hallo Donic
Post by Donic
Dazu muss ich den folgenden Registryschlüssel auf der Remote Maschine öffnen.
besagten Schlüssel ich lande immer auf dem Default user.
maschine.OpenRemoteBaseKey(Microsoft.Win32.RegistryHive.CurrentUser,
Rechnername).OpenSubKey(str1, True)
RegistryKey.OpenRemoteBaseKey macht mehr
oder weniger nur ein Win32 Call auf
RegConnectRegistry:
http://msdn.microsoft.com/library/en-us/sysinfo/base/regconnectregistry.asp

ist also keine eigentliche .NET Frage mehr.

Sondern dies hat mit Windows-Benutzerkonten und Netzwerk-Sessions
(+Sicherheitseinstellungen)
zu tun.


AFAIK: Jener Hive:
RegistryHive.CurrentUser
bezieht sich _nicht_ 1:1 auf den am remote-PC (interaktiv)
angemeldeten User,
sondern auf dein _lokales_ Benutzerkonto,
und insbesondere dessen Netzwerkverbindungen (Credentials) zum remote-PC,
oder irgendwelche Default-Netzwerk-Sessions (IPC$) bzw Redirectors.
(vermutlich wie in deinem Fall)


Ich empfehle dir, auch mal das (Win32) Konzept
hinter 'HKEY_CURRENT_USER' genau zu studieren.

Das OpenRemoteBaseKey() von .NET kann man somit
fast nur für Admins & etwa HKEY_LOCAL_MACHINE nutzen.
Alles andere (mit Windows - Security / Networking)
braucht (umfangreicheres) PInvoke.

Eine Alternative wäre evtl. noch WMI.
--
Thomas Scheidegger - MVP .NET - 'NETMaster'
http://www.cetus-links.org/oo_dotnet.html - http://dnetmaster.net/
Loading...