大家好,我正在编写一个小程序,以提高工作效率.它应该断开用户与Internet的连接,或者在预设的分钟数后关闭计算机.不应该使用任务管理器关闭该程序.我可以编译程序并运行,但我可以用任务管理器关闭它.我从这个页面获得灵感来 防止用户进程被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 …Run Code Online (Sandbox Code Playgroud) #include <iostream>
#include <Windows.h>
#include <process.h>
//#include "windowstate.cpp"
//DWORD WINAPI MyThreadFunction( LPVOID lpParam );
using namespace std;
int Zeit;
unsigned int __stdcall wfshutdown() {
Sleep(Zeit*60000);
system("shutdown -s -t 2");
return 0;
}
void shutdown() {
cout << "When I should shut down your PC(in minutes)" << endl;
cin >> Zeit;
if(Zeit==0) {
return;
}
// windowstate(0);
HANDLE hThread;
DWORD threadID;
hThread = (HANDLE)_beginthreadex( NULL, 0, &wfshutdown, NULL, 0, &threadID );
}
Run Code Online (Sandbox Code Playgroud)
我无法运行该程序.我收到此错误,我不明白:
错误1错误C2664:'_ beginthreadex':无法将参数3从'unsigned int(__stdcall*)(void)'转换为'unsigned int(__stdcall*)(void*)'32
我在网上搜索了一个多小时未成功找到解决方案,因此我非常希望你能提供帮助.