Estou tentando iniciar o 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. Nesse ponto, presumi que, se eu alternasse para a sessão 0, o cmd.exe estaria em execução.
Alterno para a sessão 0 usando o seguinte comando:
rundll32 winsta.dll,WinStationSwitchToServicesSession
Isso muda com êxito para a sessão 0, mas a única janela disponível é a que tem a opção de retornar à sessão 1.
Como faço para iniciar o cmd.exe na sessão 0?
windows-7
command-line
session
omghai2u
fonte
fonte
Respostas:
Para iniciar o cmd.exe na sessão 0, use o psexec do Sysinternals
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:
Dessa forma, quando você alterna para a sessão 0, o cmd.exe estará esperando por você lá.
você tem tantos direitos quanto pode obter no Windows 7:
se você usa outros PsTools, lembre-se de usar a opção / accepteula:
caso contrário, o programa exibirá uma caixa de mensagem para solicitar a aceitação do Eula, o programa será interrompido 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:
você verá seu 'cmd.exe' entre todos os processos de serviço.
fonte
-s
roda comoSYSTEM
usuário e não aceita argumentos. Talvez você quis dizer-i 0
no primeiro exemplo e-s -i 0
no segundo?Isso não vai funcionar. Apenas inicia um processo como sistema.
Serviços são programas escritos de uma maneira especial para aceitar comandos do gerenciador de controle de serviço.
A Microsoft possui um utilitário que permite executar um programa como serviço. É chamado
Srvany
e está nas Ferramentas do Windows 2003 Resource Kit.Faça o download das ferramentas do Windows Server 2003 Resource Kit
fonte
Descobri a solução por acidente um dia, mas http://www.alex-ionescu.com/?p=59 também documenta uma solução próxima ao que encontrei
Crie um arquivo em lotes com o seguinte (chame de some.bat)
Em seguida, crie um serviço para chamar esse arquivo em lotes (usando um prompt de comando do administrador)
(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
(Não há necessidade de fazer o ui0detect iniciar automaticamente com a configuração sc UI0Detect start = auto)
E se tudo correr bem, você receberá a caixa intermitente de mensagens iminentes! Vá para Visualizar mensagens e você terá um prompt de comando Admininstrator (nt Authority \ system) que não será destruído automaticamente por uma falha no início do serviço (daí a necessidade de um arquivo em lotes com o comando start)
Isso funciona, embora às vezes não funcione na primeira tentativa.
Eu acredito que isso lhe dá acesso apenas à sessão interativa 0, que existe apenas para o usuário nt Authority \ system
fonte
Você pode usar o atalho start (Windows) + R para iniciar a caixa de diálogo 'run'. A partir daí, basta digitar 'cmd' (sem aspas) e voila. cmd
fonte
CMD
normalmente não o colocaSession 0
.