为什么 Win32_ProcessStopTrace-Events 到了,而 Win32_ProcessStartTrace 没有?
Why Win32_ProcessStopTrace-Events arrive, but Win32_ProcessStartTrace doesn't?
考虑以下代码:
using (ManagementEventWatcher watcher = new ManagementEventWatcher("select * from Win32_ProcessStopTrace")) {
watcher.EventArrived += (object sender, EventArrivedEventArgs e) => {
Console.WriteLine("{0} stopped", (string)e.NewEvent["ProcessName"]);
};
watcher.Start();
while (!Console.KeyAvailable)
System.Threading.Thread.Sleep(50);
watcher.Stop();
}
当我 运行 此代码(作为管理员)时,它会在我关闭任何其他应用程序时立即通知我。
首先:当使用 Win32_ProcessStartTrace
而不是 Win32_ProcessStopTrace
时,我没有收到任何启动进程的通知。这是为什么?
第二:如果有可能监视(每个)启动进程,我可以暂停它们,做其他事情然后继续执行吗?
版本信息:
Windows 8.1 x64(v6.3 版本 9600)
.NET Framework v4.0.30319(在
目录),4.6.00081(根据 VS)
(不知道有没有
需要特定的更新,所以你可以要求它们)
正如@HansPassant 指出的那样,此查询不适用于 Windows 8.1。这与修复此问题的 security update (KB3045999). Under Known issues there's a link to a hotfix (KB3094199) 有关。安装此修补程序并重新启动我的计算机后,查询终于成功了。
考虑以下代码:
using (ManagementEventWatcher watcher = new ManagementEventWatcher("select * from Win32_ProcessStopTrace")) {
watcher.EventArrived += (object sender, EventArrivedEventArgs e) => {
Console.WriteLine("{0} stopped", (string)e.NewEvent["ProcessName"]);
};
watcher.Start();
while (!Console.KeyAvailable)
System.Threading.Thread.Sleep(50);
watcher.Stop();
}
当我 运行 此代码(作为管理员)时,它会在我关闭任何其他应用程序时立即通知我。
首先:当使用 Win32_ProcessStartTrace
而不是 Win32_ProcessStopTrace
时,我没有收到任何启动进程的通知。这是为什么?
第二:如果有可能监视(每个)启动进程,我可以暂停它们,做其他事情然后继续执行吗?
版本信息:
Windows 8.1 x64(v6.3 版本 9600)
.NET Framework v4.0.30319(在 目录),4.6.00081(根据 VS)
(不知道有没有 需要特定的更新,所以你可以要求它们)
正如@HansPassant 指出的那样,此查询不适用于 Windows 8.1。这与修复此问题的 security update (KB3045999). Under Known issues there's a link to a hotfix (KB3094199) 有关。安装此修补程序并重新启动我的计算机后,查询终于成功了。