阻止进程在任务pipe理器中closures

嗨,大家好我正在编程一个小程序,以提高生产力。 它应该断开用户与互联网或在预设的分钟数后closures您的计算机。 程序不应该由任务pipe理器closures。 我可以编译程序并运行,但是我可以用任务pipe理器closures它。 我从这个页面获得灵感阻止用户进程被Process Explorer中的“End Process”终止

#include <iostream> #include <Windows.h> #include <AccCtrl.h> #include <AclAPI.h> #include <tchar.h> #include "shutdown.cpp" #include "disconnect.cpp" static const bool ProtectProcess() { HANDLE hProcess = GetCurrentProcess(); EXPLICIT_ACCESS denyAccess = {0}; DWORD dwAccessPermissions = GENERIC_WRITE|PROCESS_ALL_ACCESS|WRITE_DAC|DELETE|WRITE_OWNER|READ_CONTROL; BuildExplicitAccessWithName( &denyAccess, _T("CURRENT_USER"), dwAccessPermissions, DENY_ACCESS, NO_INHERITANCE ); PACL pTempDacl = NULL; DWORD dwErr = 0; dwErr = SetEntriesInAcl( 1, &denyAccess, NULL, &pTempDacl ); // check dwErr... dwErr = SetSecurityInfo( hProcess, SE_KERNEL_OBJECT, DACL_SECURITY_INFORMATION, NULL, NULL, pTempDacl, NULL ); // check dwErr... LocalFree( pTempDacl ); CloseHandle( hProcess ); return dwErr == ERROR_SUCCESS; } int main() { using namespace std; int abfrage; ProtectProcess(); for (;;) { cout << "10.Cut your Internet connection" << endl << "11.Cut your Internet connection after 'x' minutes of surfing" << endl << "20.Shutdown" << endl; cin >> abfrage; switch(abfrage) { case 10: disconnectnow(); break; case 11: disconnectlater(); break; case 20: shutdown(); break; default: cout << "nothing to see here" << endl; } } return EXIT_SUCCESS; } 

Solutions Collecting From Web of "阻止进程在任务pipe理器中closures"

这个功能是故意不被支持的,而且是积极的:

为什么不能陷入TerminateProcess?

如果用户启动“任务管理器”并单击“应用程序”选项卡上的“结束任务”按钮,则Windows将首先尝试通过向GUI程序发送WM_CLOSE消息并向控制台程序发送CTRL_CLOSE_EVENT事件来CTRL_CLOSE_EVENT程序。 但是你没有机会拦截TerminateProcess 。 为什么不?

TerminateProcess是低级的进程查杀功能。 它绕过DLL_PROCESS_DETACH和其他任何过程。 当你使用TerminateProcess ,在这个过程中不会再有用户模式的代码运行。 它消失了。 不要过去了。 不要收200美元。

如果你能拦截TerminateProcess ,你将会升级程序和用户之间的军备竞赛。 假设你可以拦截它。 那么,如果你想让你的程序不可用,你只需要交出你的TerminateProcess处理程序! 然后人们会要求“杀死一个拒绝被TerminateProcess杀死的进程”,我们会回到我们开始的地方。

在实践中,试图逃避检测和任务kill的程序尝试将其自身重命名为Windows系统进程的近似形式。 不要这样做。 它保证你的程序将被提交为恶意软件,并将杀死你的信誉。