mfc类中有实现关机的函数吗?不要windows api的ExitWindowsEX函数。
发布网友
发布时间:2022-04-02 07:24
我来回答
共3个回答
热心网友
时间:2022-04-02 08:54
特权是很多安全程序必需的。。没有特权就不能对系统级的程序进行修改。。
HANDLE hdl; 新建一个柄.用作局部变量。。
OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, &hdl);
// 打开一个进程。。把进程句柄给hdl.. HANDLE GetCurrentProcess(VOID).. 返回一个当前进程的句柄。
PTOKEN_PRIVILEGES ptoken = (PTOKEN_PRIVILEGES) new BYTE[sizeof(DWORD) + sizeof(LUID_AND_ATTRIBUTES)];
// 新建一个特权结构。。用于后面的 AdjustTokenPrivileges();
ptoken->PrivilegeCount = 1; // 设置特权为1。。即是第一个。。
LUID uid; // 建立一个局部LUID变量。。用于设置PTOKEN_PRIVILEGES结构。
LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &uid); // 用于设定一个权力。。// SE_SHUTDOWN_NAME就是可以关机的权力。。
ptoken->Privileges[0].Luid = uid;
ptoken->Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; // 设置权力的状态是可用的。。
AdjustTokenPrivileges(hdl, FALSE, ptoken, 0, NULL, NULL); //向进程表内写入数据
// 把当前进程的特权性质写入系统。。。重要参数是第一个,进程句柄。 第三个。。权力结构。。
CloseHandle(hdl); // 关闭临时句柄。。
delete [](BYTE *)ptoken; // 删除建立的内存空间。。
ExitWindowsEx(EWX_FORCE|EWX_POWEROFF,0); /// 这才能调用 ExitWindowsEx关闭计算机。。
热心网友
时间:2022-04-02 10:12
看看msdn,好像有。
热心网友
时间:2022-04-02 11:46
最终还是调用api的~~