Executar o programa somente quando o PC iniciar usando o WOL

3

É possível criar um evento ou script para iniciar quando o computador é iniciado usando o Wake-On-Lan?

Eu não quero iniciar o programa (automaticamente) quando o computador é iniciado normalmente.

    
por Inferno IV 12.07.2018 / 15:15

2 respostas

3

Aqui está a minha ideia para criar esse gatilho (mas não posso garantir sucesso). Como não tenho o ambiente certo para testar a ideia, alguma experimentação é necessária do seu lado.

O seguinte comando pode ser usado para identificar a fonte de ativação:

powercfg -lastwake

No caso do Wake-On-Lan (WOL), o dispositivo de ativação relatado será o seu Controlador Ethernet.

Quando você souber que esse evento ocorreu e o nome exato do wake source, esta é a minha ideia sobre como adicionar um script de gatilho:

  1. Abra o Visualizador de Eventos e encontre o evento WOL (onde a origem do wake é o controlador Ethernet)
  2. Clique com o botão direito do mouse no evento e selecione "Anexar tarefa a este evento ..."
  3. Selecione "Iniciar um programa" como a ação
  4. Adicione Powershell.exe e o caminho para o seu script
  5. Para mais controle, na etapa Concluir, selecione "Abrir as propriedades ..." check-box
  6. Na guia "Disparadores", edite o acionador de evento para adicionar um acionamento mais detalhado

Algumas referências e exemplos para ajudar na introdução:

por 17.07.2018 / 07:51
2

Como o Ramhound já mencionou nos comentários, o Windows não tem como saber como o computador foi ligado. (WOL, evento do timer do Bios, manualmente ligado, e assim).

A única coisa que você pode obter do Windows é se a inicialização do computador ocorreu após um evento normal de reinicialização ou desligamento ou se o computador foi inicializado após uma perda inesperada de energia ou um desligamento forçado. Esta informação pode ser encontrada no log de eventos.

O melhor que você pode fazer aplica-se se tiver certeza de que o evento WOL ocorre apenas em um período de tempo em que você nunca usaria seu computador. Você pode configurar uma tarefa agendada para ser executada a cada 5 minutos ou mais durante esse período de tempo que executa um script para iniciar o aplicativo.
A tarefa deve ser configurada para NÃO acordar o computador, para que ele só seja executado se o computador for despertado pelo WOL. O script deve basicamente verificar primeiro se o aplicativo já está em execução (se for: exit) e iniciar o aplicativo se ele não estiver em execução.

Além disso: Se o evento WOL ocorrer aleatoriamente, você ainda poderá usar a abordagem de tarefa agendada se configurar o computador para NÃO usar o login automático. Se você tiver certeza de SAIR antes de deixar o computador para ir dormir, o computador sairá do modo de espera no evento WOL sem que ninguém esteja logado.
Você pode testar isso na tarefa agendada e só executar o aplicativo se ninguém estiver logado. Isso é um pouco complicado, já que o Windows não oferece uma verificação fácil para isso. Minha abordagem usual para isso é usar tasklist | findstr explorer . Se houver usuário (s) logado, você receberá 1 linha para cada usuário, porque cada um tem sua própria cópia do explorer.exe em execução. Mas se não houver ninguém logado, também não há explorer.exe em execução.

    
por 16.07.2018 / 13:08