Um serviço pode gerar uma sessão de login? Construa consolos no servidor

6

Para executar alguns testes de aceitação no meu servidor de compilação, eu preciso ter uma sessão de usuário conectada aberta (as necessidades da estrutura de teste branco ter uma "tela" para testar as interfaces do usuário do WPF o tempo todo. Esta é obviamente uma configuração frágil e introduz um pouco de atrito em nosso processo.

Seria possível ter um serviço do Windows em execução em segundo plano que pudesse "gerar" uma sessão em que ele se registra como usuário, algum trabalho (nesse caso, o teste) e, em seguida, fazer logoff? Ou há possivelmente uma maneira melhor de lidar com a minha situação do que o que estamos fazendo agora? Fica frustrante porque, por exemplo, se o aplicativo falha em algum momento, a caixa de diálogo de exceção aparece, congelando nosso servidor de compilação. Eu estava pensando em incapacitar drastas para lidar com isso, mas tenho a sensação de que estou indo por um caminho cheio de perigos.

    
por DavidN 14.07.2010 / 22:44

3 respostas

5

Primeiro de tudo, um pouco mais de detalhes sobre o seu ambiente ajuda. Eu suponho que seja o Windows 2003 ou o Windows 2008 Server.

Para ser honesto, não sou especialista nesse assunto, mas quem usa essa caixa? Se você tem privilégios de administrador na caixa, você pode usar o psexec (se você ainda não ouviu falar dele, é um utilitário Sysinternals gratuito). Você pode iniciar um processo na sessão de console (assim, com a área de trabalho interativa, na linguagem psexec). Se você fizer login automático em uma caixa com as configurações corretas do registro, poderá fazer com que o PsExec faça isso se as configurações de segurança forem danificadas. As chaves de registro incluem o armazenamento da senha em texto sem formatação, então eu iria bloquear essa conta.

PsExec executa um programa em um sistema remoto, onde console executado remotamente aplicações executam interativamente.

Usage: psexec [\computer[,computer2[,...] | @file][-u user [-p psswd]][-n s][-l][-s|-e][-x][-i [session]][-c [-f|-v]][-w directory][-d][-<priority>][-a n,n,...] cmd [arguments]

. . .

     -d         Don't wait for process to terminate (non-interactive).
     -i         Run the program so that it interacts with the desktop of the

Então, para que vale a pena, eu acho que você poderia iniciar uma sessão e ter um script de lote de tarefas agendadas que procura qual usuário está logado e faça o seguinte, que inicia um processo com uma determinada sessão ou área de trabalho interativa se você não especificar, e não esperará que o processo saia. Isso apenas irá gerar.

 %SYSTEMDRIVE%\path\to\psexec.exe -i -d C:\path\to\your\app.exe

Agora, se você tiver um dos produtos do Windows Server, talvez consiga fazer login ocasionalmente com o RDP (mstsc.exe) usando o parâmetro console , agora o parâmetro admin no Windows 2008.

Então, novamente, esta é a divagação de um noobie. Eu poderia estar fora da base desse trabalho. Alguém mais experiente poderia ajudar.

    
por 19.07.2010 / 20:34
1

O cenário "log in and do work" é um problema de galinha ou ovo.

Eu começaria com o AutoHotkey e verificaria se não conseguia automatizar os elementos da interface do usuário que precisava manipular. De volta a w2K dias, eu costumava ter um grupo de máquinas onde bloqueamos a herança do GPO para permitir explicitamente "não usar ctrl-alt-del" e depois usar o autoexec.bat para iniciar um processo. Se você conseguir chegar a esse ponto, o AHK pode automatizar o resto. No pior dos casos, talvez seja necessário usar o AHK para automatizar uma sessão VNC, para contornar as complexidades do login diretamente.

Não estou interessado na estratégia "Serviço". Existem limitações entre os serviços e a interface do usuário; a opção "permitir serviço para interagir com a área de trabalho" sugere dicas sobre os problemas que você pode ter.

    
por 20.07.2010 / 01:46
0

Talvez o login automático seja uma opção.

Obviamente, você precisa de controles de segurança do servidor físico, se não for uma VM.

Inicie os serviços de teste necessários como programas de inicialização para o usuário de logon automático. Se ele falhar, reinicialize a caixa (por meio de interação com scripts com o DRAC, o iLO, o VMware ESX, o que estiver sendo executado no topo) e os serviços serão reiniciados.

    
por 24.07.2010 / 07:23