13,825
社区成员
发帖
与我相关
我的任务
分享
void __fastcall TForm1::Button1Click(TObject Sender)
{
//其它身份登录
DWORD temp;
ExitWindowsEx(EWX_LOGOFF,temp);
}
//------------------------------
void __fastcall TForm1::Button2Click(TObject Sender)
{
//关机
DWORD temp;
ExitWindowsEx(EWX_SHUTDOWN,temp);
}
//------------------------------
void __fastcall TForm1::Button3Click(TObject Sender)
{
//重新启动
DWORD temp;
ExitWindowsEx(EWX_REBOOT,temp);
}
//------------------------------
void __fastcall TForm1::Button4Click(TObject Sender)
{
//强制关机
DWORD temp;
ExitWindowsEx(EWX_FORCE,temp);
}
HANDLE hToken;
TOKEN_PRIVILEGES tkp;
if (!::OpenProcessToken(::GetCurrentProcess(),
TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken))
return;
::LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &tkp.Privileges[0].Luid);
tkp.PrivilegeCount = 1; // one privilege to set
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
::AdjustTokenPrivileges(hToken, FALSE, &tkp, 0, (PTOKEN_PRIVILEGES)NULL, 0);
if (::GetLastError() != ERROR_SUCCESS)
ShowMessage("AdjustTokenPrivileges Error");
if (!::ExitWindowsEx(EWX_SHUTDOWN | EWX_FORCE, 0))
ShowMessage("ExitWindowsEx Error");