【发布时间】:2012-03-17 22:36:32
【问题描述】:
我正在开发一个小程序来提高工作效率。它应该在预设的分钟数后断开用户与 Internet 的连接或关闭您的计算机。该程序不应使用任务管理器关闭。我可以编译程序并运行它,但我可以用任务管理器关闭它。我的灵感来自this page:
#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;
}
【问题讨论】:
-
管理员将总是能够杀死您的程序,不是吗?停止互联网连接不会降低您的工作效率吗?
-
从任务管理器中隐藏程序或阻止它们被关闭是 Windows 努力阻止的事情,原因很明显。
-
@Carl Norum 我经常不得不阅读 pdf 来学习,但互联网让我望而却步。它不适用于管理员或用户权限。
-
@ChrisF 在给定的链接上你可以看到有人成功地做到了。
-
您链接到的情况与您描述的情况并不完全相同。