Интерактивная сессия 0 в Windows 7
Я пытаюсь запустить cmd.exe в сеансе 0. До сих пор я сделал следующее из командной строки с повышенными правами:
sc config UI0Detect start= auto
net start UI0Detect
И ответ указывает, что служба была запущена правильно. Именно в этот момент я предположил, что если я переключусь на сессию 0, cmd.exe будет запущен.
Я переключаюсь на сессию 0, используя следующую команду:
rundll32 winsta.dll,WinStationSwitchToServicesSession
Это успешно переключает меня в сеанс 0, но единственное доступное окно - это то, которое имеет возможность вернуться в сеанс 1.
Как мне получить cmd.exe для запуска в сеансе 0?
4 ответа
Чтобы запустить cmd.exe в сеансе 0, используйте psexec от Sysinternals
psexec.exe -s 0 cmd.exe
Теперь у вас есть консоль, запущенная в сеансе 0,
Вы также можете запустить cmd.exe в сеансе 0 и отобразить графический интерфейс:
psexec.exe -s -i 0 cmd.exe
таким образом, когда вы переключаетесь на сессию 0, cmd.exe будет ждать вас там.
у вас есть столько прав, сколько вы можете получить в Windows 7:
whoami /all
если вы используете другие PsTools, не забудьте использовать ключ /accepteula:
pslist /accepteula
в противном случае программа выскакивает окно сообщения с просьбой принять Eula, программа зависнет, потому что в сеансе 0 отсутствует пользовательский интерфейс для закрытия окна сообщения.
Чтобы убедиться, что вы работаете в сеансе 0, вы можете использовать qprocess:
qprocess /ID:0
вы увидите ваш cmd.exe среди всех сервисных процессов.
Это не сработает. Это просто запускает процесс как система.
Службы - это программы, написанные особым образом для приема команд от диспетчера управления службами.
У MS есть утилита, которая позволяет запускать программу как сервис. Это называется Srvany
и находится в Windows 2003 Resource Kit Tools.
Однажды я обнаружил решение случайно, но http://www.alex-ionescu.com/?p=59 также документирует решение, близкое к тому, что я нашел
Создайте командный файл со следующим (назовите его some.bat)
start cmd
Затем создайте службу для вызова этого пакетного файла (используя командную строку администратора)
sc create access0 type= interact type= own binpath= some.bat
(Обратите внимание на пробел после каждого =, и я предлагаю использовать полный путь для some.bat)
Тогда это вопрос запуска услуг
sc start ui0detect
sc start access0
(Нет необходимости автоматически запускать ui0detect с помощью sc config UI0Detect start= auto)
И если все пойдет хорошо, вы получите мигающую коробку с неизбежными сообщениями! Перейдите к разделу "Просмотр сообщений", и вы получите командную строку Admininstrator (nt полномочия \ система), которая не будет автоматически уничтожена при неудачном запуске службы (следовательно, необходим пакетный файл с командой start)
Это работает, хотя иногда это не работает с первой попытки.
Я считаю, что это дает вам доступ только к интерактивному сеансу 0, который существует только для пользователя nt полномочия \ system
Вы можете использовать сочетание клавиш "Пуск" (Windows)+R, чтобы запустить диалоговое окно "Выполнить". Оттуда просто введите "cmd" (без кавычек) и вуаля. CMD