14

Я пытаюсь запустить 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 ответа4

18

Чтобы запустить 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» среди всех сервисных процессов.

1

Это не сработает. Это просто запускает процесс как система.

Службы - это программы, написанные особым образом для приема команд от диспетчера управления службами.

У MS есть утилита, которая позволяет запускать программу как сервис. Он называется Srvany и находится в Windows 2003 Resource Kit Tools.

Загрузить инструменты комплекта ресурсов для Windows Server 2003

0

Однажды я обнаружил решение случайно, но 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

-2

Вы можете использовать сочетание клавиш «Пуск» (Windows)+R, чтобы запустить диалоговое окно «Выполнить». Оттуда просто введите «cmd» (без кавычек) и вуаля. CMD

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .