web-dev-qa-db-fra.com

Séance interactive 0 sous Windows 7

J'essaie de lancer cmd.exe en session 0. Jusqu'à présent, j'ai effectué les suivantes à partir d'une invite de commande élevée:

sc config UI0Detect start= auto
net start UI0Detect

Et la réponse indique que le service a été démarré correctement. C'est à ce stade que j'ai supposé que si je passais à la session 0, cmd.exe serait en cours d'exécution.

Je passe à la session 0 en utilisant la commande suivante:

rundll32 winsta.dll,WinStationSwitchToServicesSession

Cela m'allume avec succès à la session 0, mais la seule fenêtre disponible est celle qui a la possibilité de revenir à la session 1.

Comment obtenir cmd.exe à lancer dans la session 0?

14
omghai2u

Pour lancer cmd.exe dans la session 0, utilisez pSexec de sysinternals

psexec.exe -s 0 cmd.exe

Maintenant, vous avez une console en cours d'exécution dans la session 0,

vous pouvez également démarrer cmd.exe dans la session 0 et afficher GUI:

psexec.exe -s -i 0 cmd.exe

de cette façon, lorsque vous passez à la session 0, la cmd.exe vous attendra là-bas.

vous avez autant de droits que vous pouvez entrer dans Windows 7:

whoami /all

si vous utilisez d'autres pstools, n'oubliez pas d'utiliser le commutateur/Acceptaula:

pslist /accepteula

sinon, le programme apparaît dans une boîte de message pour demander à accepter le CLUF, le programme se bloquera car il n'y a pas d'interface utilisateur dans la session 0 pour fermer la boîte de message.

Pour vérifier que vous courez dans la session 0, vous pouvez utiliser QProcess:

qprocess /ID:0

vous verrez votre "cmd.exe" parmi tous les processus de service.

19
Peter Hahndorf

Ça ne marchera pas. Il commence simplement un processus en tant que système.

Les services sont des programmes écrits de manière particulière d'accepter des commandes auprès du responsable du contrôle de service.

MS a un utilitaire qui permet d'exécuter un programme en tant que service. C'est ce qu'on appelle Srvany et se trouve dans les outils de Kit de ressources Windows 2003.

Téléchargez les outils de kit de ressources de Windows Server 20

1
David

J'ai découvert la solution par accident un jour, mais http://www.alex-ionescu.com/?p=59 Document également une solution à proximité de ce que j'ai trouvé

Créez un fichier de commandes avec ce qui suit (appelez-le)

start cmd

Ensuite, créez un service pour appeler ce fichier de commandes (à l'aide d'une invite de commande admin)

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

(Notez l'espace après chaque =, et je suggère d'utiliser un chemin complet pour certains.

Ensuite, il s'agit de démarrer les services

sc start ui0detect
sc start access0

(Il n'y a pas besoin de faire un démarrage automatique ui0Detect Auto avec SC Config uI0Detect Démarrer = Auto)

Et si tout va bien, vous obtiendrez la boîte clignotante des messages imminents! Allez pour afficher les messages et vous aurez vous-même une invite d'administrateur (NT Authority\System) qui ne sera pas automatiquement détruit par un service de service échoué (d'où la nécessité d'un fichier de commandes avec la commande de démarrage)

Cela fonctionne, bien que parfois cela ne fonctionne pas le premier essai.

Je crois que cela vous donne accès à la session interactive 0 uniquement, qui n'existe que pour l'utilisateur de l'autorité NT\System

0
Andy