我在 Windows8.1x64 上对 wbemtest.exe 使用了几个 WMI 查询,试图找出哪个用户启动了特定服务。下面列出了让我“走到这一步”的查询。我知道如果我像这样查询 win32_service 对象:
select * from win32_service where name like '%SERVICENAME%'
我只获得一个结果(我正在寻找的服务),然后我双击它来浏览服务属性,发现有一个名为“StartName”的属性,它显示启动它的用户的名称(这就是我想要的)。
现在,当我这样做时问题就开始了:
select StartName from win32_service where name like '%SERVICENAME%'
我明白了Win32_Service = <no key>
即使没有 where 子句,它也显示相同的内容。(但对于所有本地服务)
我缺少什么才能使它正常工作?
答案1
该财产不是谁开始了,但应该由谁来开始于即它将在哪个帐户下运行。
我认为这里对您来说最好的选择是事件日志,尽管我认为它只会显示默认进入停止和启动状态的服务。
该服务通常在 SYSTEM 或 NETWORK SERVICE 或其他系统帐户下运行,因此即使您找到可执行进程,也不会包含答案。
简而言之,这很棘手。我认为您可能需要研究 Windows 中的审核功能。事实上,它是一项服务,这意味着通常是系统而不是用户启动它。