如何检测哪个用户在 Windows 上安装或删除了程序
在具有多个管理员的大型企业环境中,通常需要确定哪个用户在特定 Windows 服务器或工作站上安装或卸载了程序。让我们探讨如何从 Windows 事件查看器日志中提取信息,以识别启动程序安装或删除的特定用户。
当您使用 MSI 安装程序安装或卸载经典 Windows 应用程序时,相应的MsiInstaller事件写入事件查看器日志中。
了解更多:Windows 10 安装无法检测到硬盘,我该怎么办?
- 11707– MSI应用程序成功安装的事件代码。
- 11724– MSI应用程序删除事件
打开事件查看器事件日志控制台(eventvwr.msc) 并过滤带有 ID 的事件11707和11724在应用日志。将出现程序安装和删除事件的列表。已安装或删除的程序的名称包含在事件描述中。例如:
Product: Zabbix Agent 2 (64-bit) -- Removal completed successfully.
Product: 7-Zip 24.09 (x64 edition) -- Installation completed successfully.
安装或卸载该应用程序的用户名可以在“用户” 事件的属性。

您可以使用 PowerShell 快速查找特定程序的所有安装和卸载事件。以下脚本将输出服务器上的所有 Zabbix 代理安装或删除事件,包括执行这些操作的用户的名称。
Get-WinEvent -FilterHashtable @{LogName="Application"; ID=11707,11724; ProviderName="MsiInstaller"} | Where-Object { $_.Message -like '*Zabbix*' } | Select TimeCreated, @{Name="Username"; Expression={(New-Object System.Security.Principal.SecurityIdentifier($_.userid)).Translate([System.Security.Principal.NTAccount]).Value}}, Message


自从userid字段包含用户的 SID,脚本将其转换为帐户名。
这可靠性监测仪还提供有关程序安装和删除事件的信息。这篇文章详细介绍了如何查看 Windows 中应用程序的安装和删除历史记录。
