Usei várias consultas WMI no Windows8.1x64 no wbemtest.exe para tentar descobrir qual usuário iniciou um serviço específico. Os que me levaram "até aqui" são apresentados aqui. Eu sei que se eu consultar o objeto win32_service como:
select * from win32_service where name like '%SERVICENAME%'
Eu obtenho apenas um resultado (o serviço que estou procurando), clico duas vezes nele para procurar as propriedades do serviço e descobri que existe uma propriedade chamada "StartName" que mostra o nome do usuário que o iniciou (é isso que eu quer).
Agora, o problema começa quando:
select StartName from win32_service where name like '%SERVICENAME%'
eu recebo Win32_Service = <no key>
Mesmo sem a cláusula where, mostra o mesmo. (Mas para todos os serviços locais)
O que estou faltando para fazê-lo funcionar corretamente?
Get-WmiObject win32_service -Property * | % { 'service:' + $_.Name + ' startas: ' + $_.StartName }
no PowerShell?Respostas:
Essa propriedade não é quem a iniciou , mas quem deve começar como a conta em que será executada.
Eu acho que a melhor aposta para você aqui é o log de eventos, embora eu pense que ele mostrará apenas os serviços que entraram nos estados parado e iniciado por padrão.
O serviço normalmente é executado em SYSTEM, NETWORK SERVICE ou outra conta do sistema; portanto, mesmo que você encontre o processo executável, isso não conterá a resposta.
Em suma, isso é complicado. Eu acho que você pode precisar examinar os recursos de auditoria no Windows. O fato de ser um serviço significa que geralmente será o sistema que o inicia, e não um usuário.
fonte