Por design, você não deveria ser capaz de iniciar processos nas sessões de outras pessoas.
(Para esclarecer, mesmo se você estiver conectado interativamente em uma área de trabalho do computador e também tiver outro logon de rede separado na mesma máquina ao mesmo tempo usando as mesmas credenciais, elas ainda contam como duas sessões de logon diferentes .)
Isso é simplesmente contra o modelo de segurança do próprio Windows e tentativas de subversão serão desaprovadas. Portanto, você provavelmente não encontrará uma maneira fácil e suportável de fazer isso. É tecnicamente possível, mas envolve executar como Sistema Local, copiar outro token de segurança do usuário conectado e iniciar um processo com esse token alternativo. Você precisaria da API do Windows para isso, que é praticamente a única coisa em que o Powershell não é muito bom. Veja WTSQueryUserToken
e CreateProcessAsUser
na API do Windows para mais detalhes sobre isso.
Uma outra ideia, para não fazer xixi nas suas Cheerios, você pode conseguir isso criando remotamente uma tarefa agendada que inicia o processo. Consulte o link para mais informações sobre isso.
Editar: Ah, e esqueci ... tenho certeza que o PsExec com o parâmetro -i
pode fazer isso. Você precisa fornecer o ID da sessão de logon. E tem permissões para isso. Ele provavelmente usa a mesma API do Windows que mencionei, o que aproveita o fato de que o PsExec instala um serviço temporário que é executado como Sistema Local.