How is it possible to start processes that are actually visible on the Windows machine?
Um bom começo seria criar o processo na sessão do usuário conectado no momento. Normalmente, é a sessão 1 se houver apenas uma pessoa conectada. Se várias pessoas estiverem conectadas, pode ser a sessão 2 ou 3 ou 27. Você teria que executar o código em wtsapi32.dll primeiro para descobrir quem estava conectado a qual sessão. Nas versões modernas do Windows, a sessão 0 é reservada para serviços e funções do sistema.
Você está iniciando um processo na sessão 0, portanto, ninguém pode ver isso.
O psexec pode iniciar um processo remoto e permitir que você escolha uma sessão diferente para iniciá-lo, mas não conheço nenhum equivalente do Linux. Eu olhei para o man page para o winexe e ele não parece ter essa opção.
Editar : a postura oficial da Microsoft é que lançar processos interativos remotamente é um risco de segurança muito grande e, assim, eles inibem sua capacidade de fazer isso ... mas ainda podemos contorná-lo se está disposto a ficar sujo:
schtasks.exe /create /S COMPUTERNAME /RU "NT AUTHORITY\SYSTEM" /RL HIGHEST /SC ONSTART /TN "RemoteProcess" /TR "program.exe \"argument 1\" \"argument 2\""
schtasks.exe /Run /S COMPUTERNAME /I /TN "RemoteProcess"
schtasks.exe /Delete /S COMPUTERNAME /TN "RemoteProcess"