PsExec und Windows 7

Ich arbeite hin und wieder gern mit PsExec (v1.98), um auf PCs im Netzwerk Batch-Dateien auszuführen oder Software zu installieren. Mit Windows XP hat das bisher super funktioniert. Gestern sollte genau das mit Windows 7 reine Formsache sein. Funktioniert hat nichts.

Beim Versuch eine Datei auf der entfernten Maschine zu starten, kam folgende Fehlermeldung:

Connecting to <IP der Windows 7-Maschine>...
Couldn't access <IP der Windows 7-Maschine>:
Zugriff verweigert

Alles Suchen in Foren, Verwendung des -h Parameters u.Ä. brachte nichts. Ich habe heute zu Hause den Aufbau nachgestellt und habe nach einigem Lesen in Dokus die Lösung gefunden.

Der Benutzer, in dessen Kontext PsExec auf der entfernten Maschine aufgerufen wird, muss Administrator, genauer Mitglied der Administratoren-Gruppe, sein. Das sagt die PsExec-Anleitung. Und genau das kann nicht funktionieren. Damit PsExec auf der entfernten Maschine einen Befehl ausführen kann, muss es in das Windows-Verzeichnis der entfernten Maschine eine Datei namens „PSEXESVC.EXE“ kopieren (z.B. nach „C:\Windows\PSEXESVC.EXE“). Das klappt nur, wenn der Benutzer, der beim Aufruf von PsExec angegeben wurde, Zugriff auf die Admin$-Freigabe der entfernten Maschine hat. Und dieses Recht besitzt nur der Benutzer „Administrator“ selbst.

Im folgenden ist die Maschine, von der aus der PsExec-Aufruf erfolgt, „A“. Auf A läuft Windows XP. Die Maschine, auf der per Fernzugriff ein Befehl ausgeführt werden soll, heißt „B“. Auf B läuft Windows 7 Professional. Soweit ich weiß, funktioniert PsExec nicht mit den Home-Versionen von Windows 7.

Vorarbeit auf B: Der Benutzer „Administrator“ ist unter Windows Vista/7 standardmäßig deaktiviert und muss zuerst aktiviert und mit einem Passwort versehen werden. Vorgehen: Startmenü -> Zubehör -> Rechtsklick auf „Eingabeaufforderung“ und aus dem Menü „Als Administrator ausführen“ wählen. In dem Terminalfenster folgenden Befehl ausführen:

net user Administrator /active:yes

Daraufhin sollte die Meldung „Befehl erfolgreich ausgeführt.“ erscheinen. Wenn die Aktion fehlschlägt, dann wurde das Terminalfenster nicht mit Administratorrechten gestartet. Als nächstes die Systemsteuerung und darin die Benutzerverwaltung öffnen. Dort den Administrator auswählen und diesem ein Kennwort zuteilen.

Zum Test auf A nun auch hier die Eingabeaufforderung öffnen und folgende Befehle nacheinander ausführen:

net use \\<IP von B>\Admin$ /user:Administrator
dir \\<IP von B>\Admin$
net use \\<IP von B>\Admin$ /delete

Beim ersten Befehl wird das Passwort des Administrators gesondert abgefragt, das im vorherigen Schritt zugewiesen wurde. Wenn diese Anfragen funktioniert haben (der dir-Befehl sollte den Inhalt von C:\Windows auf B anzeigen), wird auch PsExec funktionieren.

Test mit PsExec auf A:

psexec \\<IP von B> -u Administrator -p <Passwort> "C:\Windows\explorer.exe"

Sollte es wider erwarten weitere Probleme, v.a. mit der Admin$-Freigabe geben, sind folgende zwei Artikel hilfreich:

http://blog.hansmelis.be/2009/09/06/administrative-shares-in-windows-7/
http://www.intelliadmin.com/index.php/2009/08/windows-7-the-admin-share/

Dieser Post ist auch verfügbar auf: Englisch

Dieser Beitrag wurde unter Allgemein veröffentlicht. Setze ein Lesezeichen auf den Permalink.

8 Antworten zu PsExec und Windows 7

  1. lizard sagt:

    Hi,

    Ich hätte da eine Frage. Ich habe einen Windows 7 Ultimat (A) und einen XP pro (B) Ich habe all deine Schritte befolgt, und nochmal ein dickes Lob dafür echt gut beschrieben! Am letzten Punkt hackt es bei mir…

    In der CMD von B habe ich beim letzten schritt dies eingetippt: psexec \\192.168.2.48 -u Administrator -p ****** „C:\Windows\explorer.exe“ um zu prüfen obs klappt.. Alle vorherigen Schritte haben funktioniert wie bei dir beschrieben nur dieser letzte nicht.

    leider passiert auf dem remote pc (A) nix und die cmd auf dem sendenden pc (B) bleibt stehen. In die cmd kann nichts mehr eingetippt werden es wird nur folgendes angezeigt:

    PSExec v1.92 – Execute processes remotely
    Copyright (c) 2001 – 2007 Mark Russinvich
    Systinternals – http://www.sysinternals.com

    Prinzipiell kann man noch was eintippen nur diese bewirken nichts in der cmd 🙁 was hab ich falsch gemacht? Vielleicht kannst du mir ja helfen:D

    Danke schon mal im Voraus

    • mario sagt:

      Hallo!

      Wenn du so weit gekommen bist: Gratulation 🙂

      Das von dir beschriebene Verhalten ist ok. Der Explorer ist ein interaktives Programm, d.h. auf „B“ bleibt die Konsole solange blockiert, wie auf „A“ der gestartete Explorer offen ist. Hinweis dazu: die per PsExec gestarteten Programme bekommst du, selbst wenn du auf „A“ angemeldet bist, nicht zu sehen, da alles im Hintergrund abläuft. Ich verwende PsExec nur für Programme/Batchdateien, die einen Job erledigen und sich dann selbst beenden.

      Kleines Experiment: melde dich auf „A“ mit einem anderen Benutzer als „Administrator“ an. Dieser Benutzer sollte allerdings Administratorrechte besitzen. Öffne jetzt via „Start“ → „taskmgr“ (und Enter) den Taskmanager. Klicke jetzt im Reiter „Prozesse“ auf „Prozesse aller Benutzer anzeigen“. Sortiere dann die Liste nach „Abbildname“. Wenn du per PsExec von „B“ nun „explorer.exe“ als „Administrator“ gestartet hast, solltest du in der Liste eine Instanz von „explorer.exe“ unter dem Benutzernamen des gerade angemeldeten Benutzers sehen und eine unter dem Benutzernamen „Administrator“. Wenn du den „explorer.exe“-Prozess von „Administrator“ beendest (und bitte nur den!), dann solltest du auf „B“ sehen, dass PsExec beendet wurde und du wieder an der Konsole bist.

      Versuchs mal.

      Viele Grüße,
      Mario

  2. lizard sagt:

    Hi,

    Ok super hat geklappt:D ich würde mit msexec gerne eine Batchdatei ausführen, die ein Programm öffnet. Dies habe ich mal testweise mit einer einfachen Batch Datei gemacht (start calc) leider kommt dann eine Error Meldung:

    c:\Windows\system32>start calc
    c:\Windows\test.bat exited on 192.168.2.48 with error code 0.

    Hm… nach dem Motto Google ist dein Freund hab ich einfach mal nach den Error Code gesucht. Leider aber nichts wirklich Erklärendes gefunden. Oder ist es einfach nicht möglich über diesen Weg eine Batch auszuführen, die dann ein Programm öffnet?

    Danke für die Hilfe!

    • mario sagt:

      Hallo!

      Das Problem ist wieder die Ausführung im Hintergrund. Versuch mal bitte folgendes:

      psexec \\192.168.2.48 -u Administrator -p ****** -i „C:\machwas.bat“

      (Achte bitte auf den neuen Parameter „-i“!)

      In der „machwas.bat“ soll nur die Zeile „start calc“ stehen.

      Nebenbei: „exited .. with error code 0“ heißt, dass das Programm durchgelaufen ist und ordentlich/fehlerfrei (!) beendet wurde.

      Viele Grüße,
      Mario

      • kollin sagt:

        Hi,

        Sry das ich mich so lange nicht gemeldet hatte 😀 ich hatte viel zutun. Danke für den Tip hat geklappt jetzt funzt alles so wie ich es mir vorgestellt hatte 😀

        LG
        Lizard

  3. Oink sagt:

    Erstmal ganz großes Lob an dich. Ich versuche schon seit 2 Tagen über einen XP Rechner auf einem Windows 7 Rechner Remote Dienste zu beenden. Habe viel mit diversen Tools getestet „sc.exe“, „WMI“ und den „PSTools“. Da ich zwar zu den ersten beiden haufenweise Beiträge gefunden hab, aber wirklich keines nur ansatzweise funktioniert hatte, dachte ich, probiere ich das nochmal mit „psexec“. Deine Anleitung ist die erste, welche auf Anhieb funktioniert und vorallem noch den Grund erklärt, warum es sonst nicht geht. Jetzt endlich kann ich die Dienste starten und beenden wie ich möchte. Nochmal Vielen Dank!

  4. Mark Knospe sagt:

    Hallo,
    wenn Ihr trotzdem den Zugriff mit anderen lokalen Benutzern, außer dem Administrator verwenden wollt, benötigt Ihr nur einen Regkey. Somit wird der Remotezugiff auf die Administrativen Freigabe aktiviert.

    http://support.microsoft.com/kb/947232

    Viel Spaß damit!

    Gruß
    Mark

  5. Marcel sagt:

    Hi 🙂

    Ich versuche die ganze Zeit, auf meinem 2. PC zuzugreifen, jedoch ohne Erfolg 🙁

    Ich bekomme immer die Meldung, dass ‚psexesvc.exe‘ nicht gefunden wurde.

    Ich habe schon als Administrator den Befehl ’sfc /scannow‘ durchgeführt, jedoch habe ich immer noch das gleiche Problem.

    Danke im Voraus 😀

Schreibe einen Kommentar zu kollin Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert