C# 如何防止在Windows中关闭远程进程?
有一个程序,我不能修改它的代码已被打开。我想创建一个“观察者”来钩住该程序的关闭事件,以便隐藏该程序的主窗口,而不是在用户试图关闭该程序时关闭 我在谷歌上搜索过,有人说名为C# 如何防止在Windows中关闭远程进程?,c#,windows,winapi,hook,C#,Windows,Winapi,Hook,有一个程序,我不能修改它的代码已被打开。我想创建一个“观察者”来钩住该程序的关闭事件,以便隐藏该程序的主窗口,而不是在用户试图关闭该程序时关闭 我在谷歌上搜索过,有人说名为OpenProcess的API可以工作。我尝试使用一个名为“EasyHook”的C#lib,并成功地注入了一个远程进程和hookMessageBeepAPI。然后我尝试钩住OpenProcess和TerminateProcess,但这两个方法中的钩住方法从未被调用 那么,我应该用什么样的方法来钩住,或者有没有其他方法可以实现我
OpenProcess
的API可以工作。我尝试使用一个名为“EasyHook”的C#lib,并成功地注入了一个远程进程和hookMessageBeep
API。然后我尝试钩住OpenProcess
和TerminateProcess
,但这两个方法中的钩住方法从未被调用
那么,我应该用什么样的方法来钩住,或者有没有其他方法可以实现我的目的呢?如果没有办法阻止使用任务管理器终止进程,是否有任何技巧,如挂起窗口的关闭按钮等
另外,我不知道Windows的内核编程和驱动程序编程,所以如果可能的话,我想在用户模式下实现它
我想创建一个“观察者”来钩住该程序的关闭事件,以便隐藏该程序的主窗口,而不是在用户试图关闭该程序时关闭
没有可以钩住的进程关闭事件。但是,对于GUI程序,您可以使用截获和窗口消息
我在谷歌上搜索过,有人说名为OpenProcess的API可以工作
无论是谁说钩住OpenProcess()
是解决这个问题的方法,要么是错误的,要么是你误解了钩子的实际用途
我尝试使用一个名为“EasyHook”的C#lib,并成功地注入了一个远程进程和hook MessageBeep API。然后我尝试钩住OpenProcess和TerminateProcess,但这两个方法的钩住方法从未被调用
当然,因为您试图在正在终止的进程中挂接它们,但它们不是从那里调用的,所以它们是在正在终止的进程中调用的(即,在任务管理器本身中)
如果无法阻止使用任务管理器终止进程
如果使用暴力“结束进程(树)”选项,则没有捕获/阻止该选项。“应用程序”选项卡上的“结束任务”选项尝试在诉诸暴力之前使用窗口消息执行优雅的终止
有没有什么技巧,比如钩住窗户的关闭按钮等
见我上面的第一条评论