Como posso consultar o WMI para saber o nome do usuário que iniciou um serviço?

0

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?

safejrz
fonte
Tente algo como Get-WmiObject win32_service -Property * | % { 'service:' + $_.Name + ' startas: ' + $_.StartName }no PowerShell?
precisa saber é o seguinte
Isso funciona bem, mas como planejo implementar a consulta em um aplicativo de formulário do Windows em C #, não posso depender do PowerShell para fazê-lo. Obrigado mesmo assim :)
safejrz
Por que não? De qualquer forma, veja: stackoverflow.com/questions/18280977/…
Zoredache
Não há nada para impedi-lo de fazer uma consulta WMI em c #!
precisa saber é o seguinte
Sei que isso funcionará para o Windows 7 e sistemas operacionais mais recentes que o incluem, mas meu aplicativo também deve ser suportado no Windows XP (sim, eu sei, isso é péssimo), mas, nesse caso, isso ainda funcionará sem que os usuários baixem / instalar qualquer msi extra, tempos de execução, etc?
safejrz

Respostas:

1

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.

arco444
fonte