任务管理器显示正在运行的程序-如何查看已结束的程序?


16

我如何找出哪些程序正在计算机上运行,​​即使它们已被停止(如果任务管理器无法显示任何内容)?

我不单独使用计算机,有时会怀疑。


4
如果该过程已结束,它将不会显示在任务管理器中,但是可能会显示在系统事件日志中,请参阅事件查看器。
摩押

7
如果您真的不信任共享您计算机的人,那么找出他们正在运行的东西可能太少,太迟。
Cody Gray

1
具有讽刺意味的是,这个问题很美味。您说您对其他人在您使用的共享计算机上所做的事情感到怀疑,但您却试图窥探别人对他们的帐户所做的一切!
与莫妮卡(Monica)进行的轻度比赛

Answers:


36

停止程序后如何查找正在运行的程序

默认情况下,没有运行任何程序的日志。

但是,您可以在Windows安全事件日志中启用进程跟踪事件(请参阅下面的说明),以后将可以使用此信息。

启用流程跟踪事件后,您可以使用以下Powershell命令检查事件:

流程开始:

Get-EventLog Security | Where-Object {$_.EventID -eq 4688} | Format-List

流程停止:

Get-EventLog Security | Where-Object {$_.EventID -eq 4689} | Format-List

上面的命令将事件信息转储到屏幕上。


如何在Windows安全日志中使用进程跟踪事件

在Windows 2003 / XP中,您只需启用流程跟踪审核策略即可获取这些事件。

在Windows 7/2008 +中,您需要启用“审核过程创建”以及(可选)“审核过程终止”子类别,您可以在组策略对象的“高级审核策略配置”下找到这些子类别。

这些事件非常有价值,因为它们在每次启动系统上的任何可执行文件时都会提供全面的审核跟踪。您甚至可以使用在两个事件中找到的Process ID,将流程创建事件链接到流程终止事件,来确定流程运行了多长时间。这两个事件的示例如下所示。

在此处输入图片说明

来源如何在Windows安全日志中使用进程跟踪事件


如何启用审核流程创建

  1. 运行gpedit.msc

  2. 选择“ Windows设置”>“安全设置”>“本地策略”>“审核策略”

    在此处输入图片说明

  3. 右键单击“审核过程跟踪”,然后选择“属性”

  4. 选中“成功”,然后单击“确定”

    在此处输入图片说明


什么是审核流程跟踪

此安全设置确定操作系统是否审核与流程相关的事件,例如流程创建,流程终止,句柄重复和间接对象访问。

如果定义了此策略设置,则管理员可以指定是仅审核成功,失败,成功和失败,还是根本不审核这些事件(即,既不成功也不失败)。

如果启用了成功审核,则每次操作系统执行这些与流程相关的活动之一时,都会生成一个审核条目。

如果启用了失败审核,则每当操作系统未能执行这些活动之一时,都会生成一个审核条目。

默认值:不审核

重要说明:要更好地控制审核策略,请使用“高级审核策略配置”节点中的设置。有关高级审核策略配置的详细信息,请参阅 http://go.microsoft.com/fwlink/?LinkId=140969


Nirsoft的ExecutedProgramList呢?我可以用吗?

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)

ExecutedProgramList


进一步阅读


一个漂亮的PowerShell代码段用于提取得到的信息将是一个不错的除了这个优秀的答案。
Peter Mortensen

@PeterMortensen谢谢。确实会。不幸的是,我对Powershell不够了解,无法编写一个。
DavidPostill

审核句柄重复听起来非常垃圾。
user253751 '16

@PeterMortensen我设法写了一个单行代码来提供信息;)
DavidPostill

@ user20574是什么意思?
DavidPostill

3

Nirsoft有一个免费的小型应用程序ExecutedProgramList,它显示在系统上执行的程序和批处理文件的列表。请注意,由于Windows固有的限制,它并不总是能够显示应用程序的上一次启动时间,并且,如@DavidPostill所述,它可能会错过便携式应用程序。

它从Windows派生其信息,因此无需运行即可编译其列表。


1
ExecutedProgramList没有给出运行程序的完整列表。例如,它没有列出任何我目前从我的闪存盘,如运行便携式程序AgentNotepad++GSNotes以及每一个因为几乎Cygwin方案我已经自从我上次重启运行。因此它不是很全面
DavidPostill

它不会列出任何不向链接中提到的位置写入任何内容的程序。
DavidPostill

它是如何工作的?它会持续对当前正在运行的进程进行采样吗?还是在进程启动和停止时由Windows通知?
Peter Mortensen

@PeterMortensen有关其工作原理,请参见我答案的结尾。并且需要手动刷新。
DavidPostill

1

流程历史记录也这样做。它是一个免费且可移植的过程数据库。

这是一个简单的便携式.zip下载。在下载站点上有关于如何将其与视频一起使用的手册。

只要进程历史记录正在运行,您就可以通过单独的GUI查询已结束的进程。

它可以在XP的任何Windows版本上运行。

(我是该开源软件的作者。)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.