【问题标题】:Hooking into a running process to monitor its status挂钩到正在运行的进程以监视其状态
【发布时间】:2013-12-16 21:09:36
【问题描述】:

我是 C# hooking 的新手,正在寻找有关在哪里进行研究的一些信息。我想这里有些人可能以前做过这件事,可能知道从哪里开始!

我的总体目标很简单——如果可能的话,创建一个 C# 应用程序,它可以在机器上搜索当前正在运行的进程以查找与某个名称匹配的进程(对于这种情况,我们可以假设它是唯一的,只有 1 个进程该名称)并“挂钩”到流程中。目标是观察该过程是否被挂断。如果它崩溃、冻结或通常有 Windows 能够检测到的任何不良健康事件,我希望能够找到它。然后,根据它所看到的,它会做其他事情。

我可以在 Python 2.7 中使用 Pai Mei 做类似的事情,但该项目已被长期放弃,并且近年来我越来越喜欢 C#。

那么:这听起来像是在 C# 中可以实现的吗?如果是这样,有没有人对我在哪里可以找到一些信息有好的建议?最后,是否有人愿意在该主题上分享一些示例代码? =D

谢谢!

【问题讨论】:

  • 这个其他进程是您正在创建和控制的另一个进程,还是您试图与一个并非旨在让您与之交互的进程交互?
  • 我想答案应该是两者兼有,虽然大部分是我制作的应用程序。我可以想到至少 1 个我还没有创建的应用程序,我想监控它,所以如果可以使用非内部流程来执行此操作,那就太棒了。
  • 它可能不是,因此问题。

标签: c# hook windows-process


【解决方案1】:

ManagementEventWatcher 可能有助于开始。但是,复杂性在于如何编写或调整 WMI 查询。

我不拥有以下代码,并且是从某个地方被盗用的。

using System;
using System.Management;

class Process {
  public static void Main() {
    ManagementEventWatcher startWatch = new ManagementEventWatcher(
      new WqlEventQuery("SELECT * FROM Win32_ProcessStartTrace"));
    startWatch.EventArrived += new EventArrivedEventHandler(startWatch_EventArrived);
    startWatch.Start();
    ManagementEventWatcher stopWatch = new ManagementEventWatcher(
      new WqlEventQuery("SELECT * FROM Win32_ProcessStopTrace"));
    stopWatch.EventArrived += new EventArrivedEventHandler(stopWatch_EventArrived);
    stopWatch.Start();
    Console.WriteLine("Press any key to exit");
    while (!Console.KeyAvailable) System.Threading.Thread.Sleep(50);
    startWatch.Stop();
    stopWatch.Stop();
  }

  static void stopWatch_EventArrived(object sender, EventArrivedEventArgs e) {
    Console.WriteLine("Process stopped: {0}", e.NewEvent.Properties["ProcessName"].Value);
  }

  static void startWatch_EventArrived(object sender, EventArrivedEventArgs e) {
    Console.WriteLine("Process started: {0}", e.NewEvent.Properties["ProcessName"].Value);
  }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-01
    • 1970-01-01
    • 2012-01-22
    • 1970-01-01
    • 1970-01-01
    • 2015-04-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多