嗨,大家好我正在編寫一個小程序,以提高生產力。它應該斷開用戶與Internet的連接,或者在預設的分鐘數後關閉計算機。該程序不應該與任務管理器關閉。我可以編譯程序並運行,但我可以用任務管理器關閉它。我得到了我的靈感來自於這個頁面 Prevent user process from being killed with "End Process" from Process Explorer阻止進程在任務管理器中關閉
#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;
}
管理員將*總是*能夠殺死你的程序,不是嗎?並不會停止互聯網連接,使您*少*生產力? – 2012-03-17 22:38:29
從任務管理器隱藏程序或防止它們被關閉是Windows出於顯而易見的原因難以預防的原因。 – ChrisF 2012-03-17 22:39:01
@Carl Norum我經常需要閱讀pdf才能學習,但互聯網讓我無法讀書。它既不能與管理員也不能使用用戶權限。 – AaronP 2012-03-17 22:50:52