小编Aar*_*onP的帖子

防止在任务管理器中关闭进程

大家好,我正在编写一个小程序,以提高工作效率.它应该断开用户与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)

c++ windows

4
推荐指数
1
解决办法
5360
查看次数

无法使用_beginthreadex编译C++程序

#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

我在网上搜索了一个多小时未成功找到解决方案,因此我非常希望你能提供帮助.

c++ multithreading beginthread beginthreadex

0
推荐指数
1
解决办法
1666
查看次数