Interaktive Sitzung 0 in Windows 7

14

Ich versuche, cmd.exe in Sitzung 0 zu starten. Bisher habe ich Folgendes an einer Eingabeaufforderung mit erhöhten Rechten ausgeführt:

sc config UI0Detect start= auto
net start UI0Detect

Und die Antwort zeigt an, dass der Dienst korrekt gestartet wurde. An diesem Punkt nahm ich an, dass cmd.exe ausgeführt würde, wenn ich zu Sitzung 0 wechseln würde.

Ich wechsle mit dem folgenden Befehl zu Sitzung 0:

rundll32 winsta.dll,WinStationSwitchToServicesSession

Das schaltet mich erfolgreich auf Sitzung 0 um, aber das einzige Fenster, das verfügbar ist, ist dasjenige, das die Option hat, zu Sitzung 1 zurückzukehren.

Wie starte ich cmd.exe in Sitzung 0?

omghai2u
quelle
Warum würdest du das tun wollen? Mit UI0Detect können alte Dienste ein Meldungsfeld öffnen, ohne neue GUI-Apps zu starten. cmd.exe hat eine GUI
Peter Hahndorf
6
@PeterHahndorf Ich verstehe, dass es Spaß macht, die Beantwortung von Fragen abzulenken, indem man sagt: "Machen wir einen Schritt zurück und sehen, ob wir das wirklich tun müssen, weil das nach einer schlechten Idee klingt." Da dies jedoch für ein Debugging-Szenario gedacht ist und eine schnelle Lösung sein soll (und eine Alternative zur Verwendung einer Drittanbieter-App wie AlwaysUp darstellt), sehe ich nicht wirklich, wie hilfreich es ist, nach dem Warum zu fragen. Danke trotzdem.
omghai2u
Ich denke, Peter hat einen Punkt. Die Frage, die Sie hätten schreiben sollen, lautet: "Das versuche ich zu tun." Eine schnelle Lösung wird nur zukünftige Schmerzen mit sich bringen. Ich kann nicht zählen, wie oft ich "Quick Fix" gehört habe, nur um das "Quick Fix" drei Jahre später in der Produktion zu sehen. . . Ich brauche noch eine "schnelle Lösung". Ich nehme an, Sie tippen, um eine Art Batch-Skript auszuführen?
Surfasb
1
@surfasb Die Frage, die Sie vorgeschlagen haben, ist im Wesentlichen die Frage, die ich geschrieben habe: "Ich versuche, cmd.exe in Sitzung 0 zu starten." Bitte konzentrieren Sie die Antworten auf diese Frage. Vielen Dank. Und es gibt keine Chance, dass dies seinen Weg in die Produktion findet oder zukünftige Schmerzen mit sich bringt. Die Art und Weise, wie ich es für die Produktion mache, ist bereits festgelegt, aber ich kann es nicht zum Debuggen verwenden. Die Art und Weise, wie ich es derzeit zum Debuggen mache, ist umständlich und beinhaltet die Verwendung einer Drittanbieter-App.
omghai2u

Antworten:

19

Verwenden Sie psexec von Sysinternals, um cmd.exe in Sitzung 0 zu starten

psexec.exe -s 0 cmd.exe

Jetzt haben Sie eine Konsole in Sitzung 0 ausgeführt,

Sie können cmd.exe auch in Sitzung 0 starten und die GUI anzeigen:

psexec.exe -s -i 0 cmd.exe

Auf diese Weise wartet die Datei cmd.exe dort auf Sie, wenn Sie zu Sitzung 0 wechseln.

Sie haben so viele Rechte wie Sie in Windows 7 bekommen können:

whoami /all

Wenn Sie andere PsTools verwenden, denken Sie daran, die Option / accepteula zu verwenden:

pslist /accepteula

Andernfalls öffnet das Programm ein Meldungsfeld, in dem Sie aufgefordert werden, die Eula zu akzeptieren. Das Programm bleibt hängen, da in Sitzung 0 keine Benutzeroberfläche zum Schließen des Meldungsfelds vorhanden ist.

Um zu überprüfen, ob Sie in Sitzung 0 ausgeführt werden, können Sie qprocess verwenden:

qprocess /ID:0

Sie sehen Ihre "cmd.exe" unter allen Dienstprozessen.

Peter Hahndorf
quelle
Vielen Dank, dass Sie versucht haben, meine Frage zu beantworten. Dies würde sicherlich funktionieren, meine spezielle Absicht (wie in den Kommentaren ausgeführt) bestand jedoch darin, die Verwendung von Apps von Drittanbietern zu vermeiden. Gibt es eine gute Möglichkeit, dies zu tun, die nicht die Verwendung von SysInternals-Tools erfordert (oder wirklich alles, was unter Windows nicht zum Standard gehört)? Danke noch einmal.
omghai2u
2
Ich halte die Sysinternal-Tools nicht für "Drittanbieter" von Microsoft, und Sie müssen sie nicht installieren.
Peter Hahndorf
Entschuldigung, ich habe etwas in Betracht gezogen, das nicht standardmäßig von einem Drittanbieter installiert wurde.
omghai2u
Peter. Großartig, danke. Funktioniert perfekt, um einen Prozess in Sitzung 0 zu starten (was bedeutet, dass er weiterläuft, wenn Sie sich abmelden.)
Daniel James Bryars
5
Die erste Befehlszeile ist falsch: Sie wird -sals SYSTEMBenutzer ausgeführt und benötigt kein Argument. Vielleicht meintest du -i 0im ersten Beispiel und -s -i 0im zweiten?
JWG
1

Es wird nicht funktionieren. Es startet lediglich einen Prozess als System.

Dienste sind Programme, die auf besondere Weise geschrieben wurden, um Befehle vom Dienststeuerungs-Manager entgegenzunehmen.

MS verfügt über ein Dienstprogramm, mit dem ein Programm als Dienst ausgeführt werden kann. Es heißt Srvanyund befindet sich in den Windows 2003 Resource Kit Tools.

Laden Sie die Windows Server 2003 Resource Kit-Tools herunter

David
quelle
0

Ich habe die Lösung eines Tages zufällig entdeckt, aber http://www.alex-ionescu.com/?p=59 dokumentiert auch eine Lösung in der Nähe der gefundenen Lösung

Erstellen Sie eine Batch-Datei mit den folgenden Angaben (nennen Sie es some.bat)

start cmd

Erstellen Sie anschließend einen Dienst zum Aufrufen dieser Batchdatei (über eine Admin-Eingabeaufforderung).

sc create access0 type= interact type= own binpath= some.bat

(Beachten Sie das Leerzeichen nach jedem = und ich schlage vor, den vollständigen Pfad für some.bat zu verwenden.)

Dann geht es darum, die Dienste zu starten

sc start ui0detect
sc start access0

(Mit sc config UI0Detect start = auto muss ui0detect nicht automatisch gestartet werden.)

Und wenn alles gut geht, erhalten Sie die blinkende Box mit den bevorstehenden Nachrichten! Gehen Sie zu Nachrichten anzeigen, und Sie haben eine Administrator-Eingabeaufforderung (nt authority \ system), die bei einem fehlgeschlagenen Dienststart nicht automatisch zerstört wird (daher ist eine Batch-Datei mit dem Befehl start erforderlich).

Dies funktioniert, obwohl es manchmal beim ersten Versuch nicht funktioniert.

Ich glaube, dies gibt Ihnen nur Zugriff auf die interaktive Sitzung 0, die nur für den Benutzer nt authority \ system vorhanden ist

Andy
quelle
-2

Sie können die Tastenkombination Start (Windows) + R verwenden, um den 'Ausführen'-Dialog zu starten. Geben Sie von dort aus einfach 'cmd' (keine Anführungszeichen) und voila ein. cmd

Y2Forever
quelle
3
Willkommen bei SuperUser. Ihr Beitrag beantwortet die Frage des OP nicht. Ab CMDnormalerweise nicht nicht setzen Sie ein in Session 0.
Ich sage Reinstate Monica