我如何找出哪些程序正在计算机上运行,即使它们已被停止(如果任务管理器无法显示任何内容)?
我不单独使用计算机,有时会怀疑。
我如何找出哪些程序正在计算机上运行,即使它们已被停止(如果任务管理器无法显示任何内容)?
我不单独使用计算机,有时会怀疑。
Answers:
默认情况下,没有运行任何程序的日志。
但是,您可以在Windows安全事件日志中启用进程跟踪事件(请参阅下面的说明),以后将可以使用此信息。
启用流程跟踪事件后,您可以使用以下Powershell命令检查事件:
流程开始:
Get-EventLog Security | Where-Object {$_.EventID -eq 4688} | Format-List
流程停止:
Get-EventLog Security | Where-Object {$_.EventID -eq 4689} | Format-List
上面的命令将事件信息转储到屏幕上。
在Windows 2003 / XP中,您只需启用流程跟踪审核策略即可获取这些事件。
在Windows 7/2008 +中,您需要启用“审核过程创建”以及(可选)“审核过程终止”子类别,您可以在组策略对象的“高级审核策略配置”下找到这些子类别。
这些事件非常有价值,因为它们在每次启动系统上的任何可执行文件时都会提供全面的审核跟踪。您甚至可以使用在两个事件中找到的Process ID,将流程创建事件链接到流程终止事件,来确定流程运行了多长时间。这两个事件的示例如下所示。
运行gpedit.msc
选择“ Windows设置”>“安全设置”>“本地策略”>“审核策略”
右键单击“审核过程跟踪”,然后选择“属性”
选中“成功”,然后单击“确定”
此安全设置确定操作系统是否审核与流程相关的事件,例如流程创建,流程终止,句柄重复和间接对象访问。
如果定义了此策略设置,则管理员可以指定是仅审核成功,失败,成功和失败,还是根本不审核这些事件(即,既不成功也不失败)。
如果启用了成功审核,则每次操作系统执行这些与流程相关的活动之一时,都会生成一个审核条目。
如果启用了失败审核,则每当操作系统未能执行这些活动之一时,都会生成一个审核条目。
默认值:不审核
重要说明:要更好地控制审核策略,请使用“高级审核策略配置”节点中的设置。有关高级审核策略配置的详细信息,请参阅 http://go.microsoft.com/fwlink/?LinkId=140969。
ExecutedProgramList不会提供已执行程序的完整列表。
例如,它没有列出我当前从拇指驱动器运行的任何可移植程序,例如Agent,Notepad ++,GSNotes,以及自上次重启以来几乎运行的所有Cygwin程序。
它不会列出任何不向链接中提到的位置写入任何内容的程序:
先前执行的程序的列表是从以下数据源中收集的:
- 注册表项:
HKEY_CURRENT_USER\Classes\Local Settings\Software\Microsoft\Windows\Shell\MuiCache
- 注册表项:
HKEY_CURRENT_USER\Microsoft\Windows\ShellNoRoam\MUICache
- 注册表项:
HKEY_CURRENT_USER\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Compatibility Assistant\Persisted
- 注册表项:
HKEY_CURRENT_USER\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Compatibility Assistant\Store
- Windows Prefetch文件夹(C:\ Windows \ Prefetch)
Nirsoft有一个免费的小型应用程序ExecutedProgramList,它显示在系统上执行的程序和批处理文件的列表。请注意,由于Windows固有的限制,它并不总是能够显示应用程序的上一次启动时间,并且,如@DavidPostill所述,它可能会错过便携式应用程序。
它从Windows派生其信息,因此无需运行即可编译其列表。
ExecutedProgramList
没有给出运行程序的完整列表。例如,它没有列出任何我目前从我的闪存盘,如运行便携式程序Agent
,Notepad++
,GSNotes
以及每一个因为几乎Cygwin
方案我已经自从我上次重启运行。因此它不是很全面。