当前位置: 首页 > 编程语言 > C#

C#RaiseEventWhenNewProcessstartssharing

时间:2023-04-10 14:07:28 C#

C#RaiseEventWhenNewProcessStarts大家好,请问有没有在事件引发时不使用Process.GetProcesses()而不使用ManagementEventWatcher来启动新进程的方法呢?ManagementEventWatcher的问题是用户需要有一个很高的预制件。谢谢!!!与您当前使用的外部事件Win32_ProcessStartTrace不同,__InstanceCreationEvent和__InstanceDeletionEventWMI内部事件不需要管理员权限。下面是一个可用于跟踪进程启动的示例查询:SELECTTargetInstanceFROM__InstanceCreationEventWITHIN1WHERETargetInstanceISA'Win32_Process'ANDTargetInstance.NameLIKE''更多信息:使用WMI处理信息和通知因为这些是内部事件,WMI最终passes轮询模仿事件行为并且只定期检查新事件(这里是每1秒)。将WITHIN持续时间减少到几分之一秒将以CPU使用率为代价提供更快的响应。通过在Windows中配置AuditProcessTracking,应该可以确定应用程序上次运行的时间。以下链接可能会帮助您入门:审计过程跟踪如何跟踪程序进出我的机器?ProcessTracking将在Windows事件日志中创建条目,然后您可以使用C#访问这些条目。参考:.NETProcessMonitor奇怪的是,应用程序不需要在Windows中创建窗口。创建进程可能不属于您正在使用的窗口工作站。无论如何,您都需要找到进程的窗口,并且还需要检测所有进程的新窗口和已关闭窗口。因此枚举窗口是更清洁/更简单的选择。在桌面句柄上尝试EnumChildWindows函数(由GetDesktopWindow检索)以查找应用程序的顶级窗口。在获取到的句柄上使用GetWindowThreadProcessId和EnumThreadWindows检测窗口的子窗口。低优先级线程将完成这项工作。您可以使用user32.dll中的EnumDesktopWindows,您将获得所有窗口句柄,您可以使用GetWindowText检查窗口的标题,使用GetClassName检查窗口类型。这样你就可以在任何地方隐藏提示或宝藏。(因为您将获得所有窗口(和控件)的句柄)。看看这个类是否对窗口创建和销毁的托管全局挂钩有用在那篇文章中,有人创建了一个很好的类,它很容易附加事件,你可以在没有提升权限的情况下运行该代码。一旦有了窗口(控件)句柄,就可以在其上添加文本或绘制图像以获取提示。以上是C#学习教程:C#在新进程启动时触发事件共享。如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: