【问题标题】:How to run code when a process is started? c# [closed]进程启动时如何运行代码? c# [关闭]
【发布时间】:2019-12-19 17:56:45
【问题描述】:

有没有办法在 c# 系统上启动任何进程时运行代码? 我需要它能够存储进程名称和路径。 如果可以做到这一点,怎么做?

【问题讨论】:

  • 请用例子解释清楚。
  • 您的意思是像病毒扫描程序一样在执行前扫描文件?或者像记录每个程序启动,即使他们没有记录任何东西? |这听起来很像 XY 问题,因此完整的图片会有所帮助。
  • 如果您只对窗口化进程感兴趣,您可以使用 UI 自动化。 this 之类的东西(它谈论 Forms,但它会检测任何 Window 类型的创建,包括控制台)。如果您对创建任何进程类型感兴趣,可以使用ManagementEventWatcher,例如this(当然,WMI 类将是Win32_Process,而不是Win32_DiskDrive,如图所示)
  • 您的问题含糊不清。你说*有没有办法在系统上启动任何进程时运行代码?将在 C# 进程启动时运行?

标签: c#


【解决方案1】:

不在托管代码中 - 您可以使用以下方式调用 Win32 API:

Hook ZwCreateSection(), CreateProcess() and CreateProcessEx() using mhook to block certain application from launching

https://www.codeproject.com/articles/11985/hooking-the-native-api-and-controlling-process-cre

技术上来自 C#,但您将不得不使用 windows api 函数,因为没有 .Net 等效项。

但是,您可以使用 Process 类迭代当前正在运行的进程,因此,如果您不关心丢失短期进程,您可以在计时器上执行此操作?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多