c++ - 如何保护进程不被杀死?

标签 c++ windows winapi g++

<分区>

我试图在 C++ Windows 中保护一个进程, 代码是:

#include <iostream>
#include <Aclapi.h>
#include <iostream>
#include <windows.h>
#include <sddl.h>
#include <stdio.h>

using namespace std;

BOOL DenyAccess()
{
    HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, GetCurrentProcessId());
    SECURITY_ATTRIBUTES sa;
    sa.nLength = sizeof(SECURITY_ATTRIBUTES);
    sa.bInheritHandle = FALSE;
    SetKernelObjectSecurity(hProcess, DACL_SECURITY_INFORMATION, sa.lpSecurityDescriptor);
    return TRUE;
}

int main()
{
    while(DenyAccess());
    return 0;
}

但我可以从任务管理器中终止进程!怎么了?

最佳答案

Windows 服务器使用一对相互监视的线程来强制执行 Windows 服务器与 Windows 客户端的许可。如果一个线程停止或挂起,另一个线程将恢复受影响的线程或启动一个新线程。线程在系统进程中运行。您不能在不使 Windows 崩溃的情况下终止系统进程。

因此,一种方法是将代码注入(inject)启动一对线程的系统进程,并让线程保护每个线程,并执行您希望无法杀死的进程执行的任何操作(或者让第三个线程执行您想要的任何工作).您可以将线程设置为非常高的优先级,以确保没有任何事情可以同时成功地针对两个线程。

关于c++ - 如何保护进程不被杀死?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35060499/

相关文章:

c++ - 多个对话过程来控制? winapi/C++

c++ - 如果应用程序崩溃(例如段错误或未处理的异常),由于某些 Win10 更新它现在似乎静静地死去

c++ - 类成员在实例初始化时需要这个指针

r - 为什么 R 默认有两个库?

C++ 开启数据类型

windows - 2GB USB 驱动器上的版本控制

python - 媒体播放/暂停模拟

c++ - WinApi 在每一帧中绘图

C++ boost::multi_index: iterator_to成员函数的顺序

Mat的C++代码转换