Sessão Interativa 0 no Windows 7

14

Estou tentando iniciar cmd.exe na sessão 0. Até agora, fiz o seguinte em um prompt de comando elevado:

sc config UI0Detect start= auto
net start UI0Detect

E a resposta indica que o serviço foi iniciado corretamente. É neste momento que eu assumi que se eu mudasse para a sessão 0, o cmd.exe estaria rodando.

alterno para a sessão 0 usando o seguinte comando:

rundll32 winsta.dll,WinStationSwitchToServicesSession

Isso me comuta para a sessão 0 com sucesso, mas a única janela disponível é aquela que tem a opção de retornar à sessão 1.

Como obtenho o cmd.exe para iniciar na sessão 0?

    
por omghai2u 21.05.2012 / 06:10

4 respostas

18

Para iniciar cmd.exe na sessão 0, use psexec em Sysinternals

psexec.exe -s 0 cmd.exe

Agora você tem um console em execução na sessão 0,

você também pode iniciar o cmd.exe na sessão 0 e exibir a GUI:

psexec.exe -s -i 0 cmd.exe

Dessa forma, quando você alternar para a sessão 0, o cmd.exe estará esperando por você lá.

você tem tantos direitos quanto conseguir no Windows 7:

whoami /all

se você usa outros PsTools, lembre-se de usar a opção / Acceptteula:

pslist /accepteula

caso contrário o programa abre uma caixa de mensagem para pedir para aceitar o Eula, o programa irá travar porque não há interface do usuário na sessão 0 para fechar a caixa de mensagem.

Para verificar se você está executando na sessão 0, você pode usar qprocess:

qprocess /ID:0

você verá o seu 'cmd.exe' entre todos os processos de serviço.

    
por 23.05.2012 / 22:35
1

Não vai funcionar. Apenas inicia um processo como Sistema.

Os serviços são programas escritos de maneira especial para aceitar comandos do gerenciador de controle de serviços.

O MS tem um utilitário que permite executar um programa como um serviço. É chamado de Srvany e está nas Ferramentas do Windows 2003 Resource Kit.

Faça o download das ferramentas do Resource Kit do Windows Server 2003

    
por 18.07.2012 / 11:40
0

Eu descobri a solução por acidente um dia, mas o link também documenta uma solução próxima ao que eu encontrei

Crie um arquivo de lote com o seguinte (chame-o de some.bat)

start cmd

Em seguida, crie um serviço para chamar esse arquivo em lote (usando um prompt de comando do administrador)

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

(Observe o espaço após cada = e sugiro usar o caminho completo para some.bat)

Então é uma questão de iniciar os serviços

sc start ui0detect
sc start access0

(Não é necessário fazer o ui0detect auto start com sc config UI0Detect start = auto)

E se tudo correr bem, você receberá a caixa de mensagens iminentes! Vá para Exibir Mensagens e você terá um Admininstrator (nt authority \ system) Prompt de Comando que não será destruído automaticamente por um início de serviço com falha (daí a necessidade de um arquivo em lote com o comando start)

Isso funciona, embora às vezes não funcione na primeira tentativa.

Acredito que isso lhe dá acesso somente à sessão interativa 0, que existe apenas para a autoridade nt \ usuário do sistema

    
por 01.08.2014 / 00:31
-2

Você pode usar o atalho start (Windows) + R para iniciar o diálogo 'run'. De lá, basta digitar 'cmd' (sem aspas) e voila. cmd

    
por 01.01.2015 / 23:50