Probleme bei auslesen der Registry
Hallo liebes Forum,
ich habe ein Problem bei remote auslesen der Registry.
Dim RemoteKey As RegistryKey
Try
RemoteKey = RegistryKey.OpenRemoteBaseKey(RegistryHive.CurrentUser, sComp).OpenSubKey("Software\Microsoft\Windows" & _
"NT\CurrentVersion\Devices", False)
Catch ex As Exception
erg_print.Text = ex.Message
Return
End Try
For Each valueName As String In RemoteKey.GetValueNames()
erg_print.Items.Add(valueName)
Next
RemoteKey.Close()
Mit diesem Code frage ich den Schlüssel "Devices" ab, in dem alle eingerichteten Drucker aufgeführt sind. Ausgeben werden mir jedoch nur der MS XPS Document Writer und der MS Office Document Image Writer, obwohl in dem Schlüssel noch weitere Drucker stehen ( Netzwerkdrucker .
Auch die Abfrage auf den Standartdrucker...
Dim Werte As String
Werte = RegistryKey.OpenRemoteBaseKey(RegistryHive.CurrentUser, sComp, _
RegistryView.Default).OpenSubKey("Software\Microsoft\Windows" & _
"NT\CurrentVersion\Windows\", False, _
Security.AccessControl.RegistryRights.ReadKey).GetValue("Device")
erg_drucker.Text = Werte
... gibt mir nur den MS XPS Document Writer wieder, obwohl in dem Schlüssel ein anderer Drucker aufgeführt ist ( wieder ein Netzwerkdrucker)
Frage ich einen anderen Schlüssel ab, bekomme ich auch das richtige Ergebniss...
Warum werden mir die Netzwerkdrucker nicht angezeigt???
Ich weiß einfach nicht mehr weiter.
Ich hoffe, Ihr könnt mir helfen...
Vielen Dank und liebe Grüße
ich habe ein Problem bei remote auslesen der Registry.
Dim RemoteKey As RegistryKey
Try
RemoteKey = RegistryKey.OpenRemoteBaseKey(RegistryHive.CurrentUser, sComp).OpenSubKey("Software\Microsoft\Windows" & _
"NT\CurrentVersion\Devices", False)
Catch ex As Exception
erg_print.Text = ex.Message
Return
End Try
For Each valueName As String In RemoteKey.GetValueNames()
erg_print.Items.Add(valueName)
Next
RemoteKey.Close()
Mit diesem Code frage ich den Schlüssel "Devices" ab, in dem alle eingerichteten Drucker aufgeführt sind. Ausgeben werden mir jedoch nur der MS XPS Document Writer und der MS Office Document Image Writer, obwohl in dem Schlüssel noch weitere Drucker stehen ( Netzwerkdrucker .
Auch die Abfrage auf den Standartdrucker...
Dim Werte As String
Werte = RegistryKey.OpenRemoteBaseKey(RegistryHive.CurrentUser, sComp, _
RegistryView.Default).OpenSubKey("Software\Microsoft\Windows" & _
"NT\CurrentVersion\Windows\", False, _
Security.AccessControl.RegistryRights.ReadKey).GetValue("Device")
erg_drucker.Text = Werte
... gibt mir nur den MS XPS Document Writer wieder, obwohl in dem Schlüssel ein anderer Drucker aufgeführt ist ( wieder ein Netzwerkdrucker)
Frage ich einen anderen Schlüssel ab, bekomme ich auch das richtige Ergebniss...
Warum werden mir die Netzwerkdrucker nicht angezeigt???
Ich weiß einfach nicht mehr weiter.
Ich hoffe, Ihr könnt mir helfen...
Vielen Dank und liebe Grüße
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 208270
Url: https://administrator.de/contentid/208270
Ausgedruckt am: 22.11.2024 um 17:11 Uhr
8 Kommentare
Neuester Kommentar
Hallo bambi2012,
als alternative empfehle ich eine Abfrage der installierten Drucker über WMI:
Das ist sauberer und weniger Fehleranfällig.
Grüße Uwe
als alternative empfehle ich eine Abfrage der installierten Drucker über WMI:
Sub Main()
Dim RemoteSystem As String = "192.168.1.10"
Dim username As String = "USERNAME"
Dim password As String = "PASSWORD"
Dim myConnOptions As New ConnectionOptions
With myConnOptions
.Username = username
.Password = password
.Impersonation = ImpersonationLevel.Impersonate
.Authentication = AuthenticationLevel.Packet
End With
Dim myScope As New ManagementScope("\\" & RemoteSystem & "\root\cimv2", myConnOptions)
myScope.Connect()
If myScope.IsConnected Then
Dim mos As New ManagementObjectSearcher(myScope, New ObjectQuery("Select * from Win32_Printer"))
Dim mgtObj As ManagementObject
For Each mgtObj In mos.Get
Console.WriteLine(mgtObj("name").ToString & " ### LocalPrinter:" & mgtObj("local").ToString)
Next
Console.WriteLine(vbCrLf & "Fertig, Taste drücken zum beenden...")
Console.ReadKey()
Else
Console.WriteLine("Konnte keine Verbindung zum RemoteSystem herstellen")
End If
End Sub
Das ist sauberer und weniger Fehleranfällig.
Grüße Uwe
Ist der User unter dem du das Programm ausführst auf dem Zielsystem Mitglied der Administratoren ? Du hast denke ich ein Rechteproblem wie @Coreknabe schon erwähnt hat.
Lokal klappt die Abfrage ja auch ordentlich, nur werden mir die Netzwerkdrucker nicht angezeigt...
Stimmt, hatte ich vergessen. Die sind ja Nutzerabhängig.Zitat von @bambi2012:
auch mit dem oberen wmi beispiel bekomme ich die netzwerkdrucker nicht angezeigt
Das geht auch nur wenn du die Logindaten des jeweiligen Users verwendest ... und die hast du wahrscheinlich nicht.auch mit dem oberen wmi beispiel bekomme ich die netzwerkdrucker nicht angezeigt