Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何防止在Windows中关闭远程进程?_C#_Windows_Winapi_Hook - Fatal编程技术网

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,并成功地注入了一个远程进程和hook
MessageBeep
API。然后我尝试钩住
OpenProcess
TerminateProcess
,但这两个方法中的钩住方法从未被调用

那么,我应该用什么样的方法来钩住,或者有没有其他方法可以实现我的目的呢?如果没有办法阻止使用任务管理器终止进程,是否有任何技巧,如挂起窗口的关闭按钮等

另外,我不知道Windows的内核编程和驱动程序编程,所以如果可能的话,我想在用户模式下实现它

我想创建一个“观察者”来钩住该程序的关闭事件,以便隐藏该程序的主窗口,而不是在用户试图关闭该程序时关闭

没有可以钩住的进程关闭事件。但是,对于GUI程序,您可以使用截获和窗口消息

我在谷歌上搜索过,有人说名为OpenProcess的API可以工作

无论是谁说钩住
OpenProcess()
是解决这个问题的方法,要么是错误的,要么是你误解了钩子的实际用途

我尝试使用一个名为“EasyHook”的C#lib,并成功地注入了一个远程进程和hook MessageBeep API。然后我尝试钩住OpenProcess和TerminateProcess,但这两个方法的钩住方法从未被调用

当然,因为您试图在正在终止的进程中挂接它们,但它们不是从那里调用的,所以它们是在正在终止的进程中调用的(即,在任务管理器本身中)

如果无法阻止使用任务管理器终止进程

如果使用暴力“结束进程(树)”选项,则没有捕获/阻止该选项。“应用程序”选项卡上的“结束任务”选项尝试在诉诸暴力之前使用窗口消息执行优雅的终止

有没有什么技巧,比如钩住窗户的关闭按钮等

见我上面的第一条评论