O Windows está usando sessões para exibir aplicativos de GUI para os usuários. Seu servidor ssh é provavelmente um serviço do windows executado pelo usuário SYSTEM na sessão 0, que é sem uma exibição gráfica. Assim, você não verá as GUIs dos aplicativos que você está iniciando.
Você pode verificar isso com o Gerenciador de processos da Sysinternals . Após iniciá-lo (como admin), clique com o botão direito do mouse na barra de colunas, clique em "selecionar colunas" e adicione "Sessão", "Acesso à interface do usuário", "Nome de usuário" e "Nível de integridade". Essas informações mostrarão para cada processo em que contexto o aplicativo está sendo executado ("Sessão"), se ele mostra uma janela ("Acesso à UI"), sob qual conta é executada ("Nome de usuário") e com quais permissões ( "Integrity Level", high significa como admin ).
Agora, se você gostaria de executar um aplicativo do seu servidor ssh em sua sessão de usuário, você pode fazê-lo com outro utilitário Sysinternals que é chamado PsExec : psexec -i <session number> -accepteula <application to execute>
. Se você quiser que o processo seja executado com seu usuário normal, você também pode usar o parâmetro -u
e pode remover permissões com -l
, se desejar. Verifique a ajuda executando psexec -?
.
Para descobrir o número de suas sessões, você também pode executar o comando qwinsta
. Dessa forma, você não precisa do aplicativo GUI do Process Explorer.
Por exemplo, para executar a calculadora, faça o seguinte:
Em uma sessão ssh, execute qwinsta
, que deve fornecer algo semelhante a isso:
C:\>qwinsta
SESSIONNAME USERNAME ID STATE TYPE DEVICE
services 0 Disc
console john.doe 1 Active
Assim, a sua sessão que você gostaria de usar é 1
neste exemplo (pode ser diferente para você). Em seguida, execute psexec -i 1 -accepteula calc.exe
. A calculadora deve agora aparecer na sua área de trabalho. (o -accepteula
é absolutamente necessário na primeira execução do aplicativo. Sem isso, o aplicativo mostrará o contrato de licença em uma janela da GUI, que - é claro - não será exibida pelos motivos mencionados acima. Em chamadas subseqüentes, você pode ignorar o parâmetro, já que uma vez aceito, a janela da GUI não aparecerá novamente.
Se você prefixar o comando autohotkey.exe
com psexec
, conforme explicado acima, esperaria que o script funcionasse, mas não posso testá-lo sozinho, pois não conheço esse aplicativo.