XspYroX Geschrieben 12. September 2012 Geschrieben 12. September 2012 Hi Hab da ein Problem und hoffe, dass ihr mir das weiterhelfen könnt Ich möchte gerne mein Netzwerk scannen und die laufenden Prozesse der Rechner dort im Netzwerk auflisten. ABER: Es sollen auch die Pfade der Prozesse angezeigt werden. Mein Code-Snippet sieht so aus: Dim ps As System.Diagnostics.Process For Each ps In System.Diagnostics.Process.GetProcesses(ip) tbWhite.AppendText(ps.MachineName & ": " & ps.ProcessName.ToString & " (" & Now() & ")" & vbCrLf) Es wird also die IP des Rechners angezeigt (ps.machinename), dann der Prozessname und dann ein Zeitstempel. Ich möchte mir aber auch den genauen Pfad des Prozesses anzeigen lassen. Wie kriege ich das am besten hin? Bin für jede Antwort dankbar PS: Falls ihr mir sagen könnt, wie ich auf selben weg noch den Rechner-Namen der jeweiligen IP herausbekomme, dann seid ihr echt göttergleich :cool: LG XspYroX Zitieren
Guybrush Threepwood Geschrieben 12. September 2012 Geschrieben 12. September 2012 Es wird also die IP des Rechners angezeigt (ps.machinename), dann der Prozessname und dann ein Zeitstempel. Ich möchte mir aber auch den genauen Pfad des Prozesses anzeigen lassen. Wie kriege ich das am besten hin? Ein kurzer Blick in die Doku zur Process Klasse verrät folgende Eigenschaft welche die gewünschten Info enthält Process.MainModule-Eigenschaft (System.Diagnostics) Auch das findet man schnell über eine Suche nach c# ip address to host name Dns.GetHostEntry-Methode (IPAddress) (System.Net) IPHostEntry.HostName-Eigenschaft (System.Net) Zitieren
XspYroX Geschrieben 12. September 2012 Autor Geschrieben 12. September 2012 (bearbeitet) Also erstmal danke Allerdings muss ich gestehen, dass ich das mit dem MainModule auch schon probiert habe, allerdings keinen Code hinbekommen habe, der mir dem Pfad anzeigt tbWhite.AppendText(ps.MainModule.ModuleName) tbWhite.AppendText(ps.MainModule) Sowas z.b. klappt nicht. Hab auch schon diverse andere Kombinationen ausprobiert x_x Ich find auch per goolgle keine guten Beispiele, die mir da weiterhelfen könnten :/ Kannst du mir vielleicht diese eine Zeile beschreiben? Also wie ich Code-Technisch einbringe? Hab da wohl irgendwie nen Brett vorm Kopf ^^"" Danke schonmal :nett: edit: Hab jetzt auch noch folgenes ausprobiert: tbWhite.AppendText(ps.MainModule.FileName.ToString) klappt aber leider auch net Bearbeitet 12. September 2012 von XspYroX ergänzung Zitieren
Guybrush Threepwood Geschrieben 12. September 2012 Geschrieben 12. September 2012 Wenn du verrätst was "klappt nicht" heißt bzw was passiert kann man dir sicherlich helfen Zitieren
XspYroX Geschrieben 12. September 2012 Autor Geschrieben 12. September 2012 Naja... Ich hab das ganze konstrukt in einem try-Catch Baum: Private Function checkIP(ByVal ip As String) If (My.Computer.Network.Ping(ip)) Then Try Dim ps As System.Diagnostics.Process Application.DoEvents() For Each ps In System.Diagnostics.Process.GetProcesses(ip) Application.DoEvents() If isWhitelisted(ps.ProcessName.ToString) = 0 Then tbWhite.AppendText(ps.MachineName & ": " & ps.ProcessName.ToString & " (" & Now() & ")" & vbCrLf) If check_log.Checked = True Then My.Computer.FileSystem.WriteAllText("log.txt", vbCrLf & Now() & " -> " & ps.MachineName & ": " & ps.ProcessName.ToString, True) End If funde_counter = funde_counter + 1 End If Next tb.AppendText("prüfe IP " & ip) tb.AppendText(" -> OK") tb.AppendText(vbCrLf) Catch ex2 As Exception tb.AppendText("prüfe IP " & ip) tb.AppendText(" -> Fehler / Dienst nicht erreichbar") tb.AppendText(vbCrLf) 'Shell("sc \\" & ip & " stop remoteregistry") 'Shell("sc \\" & ip & " start remoteregistry") End Try Else If check_dontlogoffline.Checked = False Then tb.AppendText("prüfe IP " & ip) tb.AppendText(" -> Rechner nicht erreichbar") tb.AppendText(vbCrLf) End If End If Return 0 End Function Wenn ich jetzt die Zeile tbWhite.AppendText(ps.MachineName & ": " & ps.ProcessName.ToString & " (" & Now() & ")" & vbCrLf) in eine meiner "Versuche" aus dem vorherigen Post ändere (habs jetzt mit "tbWhite.AppendText(ps.MainModule.FileName.ToString)" probiert), dann springt er in den in den Catch-Zweig und gibt "Fehler / Dienst nicht erreichbar" aus. Im tbWhite-Fenster steht dann auch nichts bzw. ein leerzeichen oder so. Das bedeutet, dass die Änderung, die ich an dieser einen Zeile vorgenommen habe, einen Fehler provizieren. Wenn ich mir die ex2-Expression ausgeben lasse (per msgbox), dann kam bis eben keine Meldung. JETZT habe ich es erneut getestet und sehe folgende Message: "Das Featurer wird nicht auf Remotecomputern unterstützt.". Hmmm.... Aber das kann ich mir nicht vorstellen. Man kann Prozesse starten, auslesen und editieren. da wird man doch wohl auch an den Pfad rankommen, oder? Muss vielleicht noch ein anderer Dienst als der Remoteregistry-Dienst laufen? hmmmmm..... Ich könnte natürlich per psexec auf dem remote-pc einen tasklist-befehl ausführen lassen, mir dann die ausgabe in eine txt-datei schreiben lassen, diese dann einlesen und auswerten lassen. aber 1. ist das kompliziert und 2. extrem fehleranfällig. Also: welchen Weg kann man bei VB einschlagen? LG spYro Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.