Pergunta : Há uma maneira de fazer de “o trabalho ShellExecuteEx ()” de uma aplicação de serviço de Windows?

Nós temos usado “ShellExecuteEx ()” para lanç um outro processo (não-console, GUI visível) de nossa aplicação.   Agora nós temos uma necessidade de funcionar a aplicação em um serviço de Windows, e “ShellExecuteEx () não trabalha (provavelmente por causa peça “do escudo da”).  Há uma maneira de fazer de “o trabalho ShellExecuteEx ()”, ou há uma outra maneira de lanç dentro um processo do não-console de um serviço?  Nós estamos trabalhando em C++. class= do

Resposta : Há uma maneira de fazer de “o trabalho ShellExecuteEx ()” de uma aplicação de serviço de Windows?

mais @rgautier: Seu conselho é obsoleto e já não suportado pelo MS
Partindo de Windows Vista, os serviços interativos são somente para a razão da compatibilidade e não devem ser permitidos para serviços novos.
Em Vista e mais novo, os serviços e os usuários entrados residem sempre na sessão terminal diferente e assim somente o IPC é possível (assim que nenhuns punhos, mensagens da janela e GUIs ser possível). Vista e mais novo indicarão uma mensagem de advertência desagradável se você tenta mostrar um diálogo em um serviço.

Em lugar de você tem que criar um processo novo na sessão do alvo (começos em 1), onde você quer funcionar sua aplicação. Usar CreateProcessAsUser (CPAU) mas NÃO CreateProcess.  Recuperar o símbolo do usuário com WTSQueryUserToken e usá-lo em CPAU então.
Outras soluções  
 
programming4us programming4us