#include <stdio.h>
#include <windows.h>
void main()
{
HANDLE hToken;
TOKEN_PRIVILEGES tkp;
//打开当前进程令牌
if(OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY,&hToken) == 0)
{
return ;
}
//查询 SE_SHUTDOWN_NAME 权限的ID
if(LookupPrivilegeValue(NULL,SE_SHUTDOWN_NAME,&tkp.Privileges[0].Luid) == 0)
{
return ;
}
//TOKEN_PRIVILEGES
tkp.PrivilegeCount = 1; //数组个数
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; //特权启用
//提权至 SE_SHUTDOWN_NAME
if(AdjustTokenPrivileges(hToken,false,&tkp,0,(PTOKEN_PRIVILEGES)NULL,0) == 0)
{
return ;
}
//执行关机
if(ExitWindowsEx(EWX_SHUTDOWN|EWX_FORCE,0) == 0)
{
return ;
}
return ;
}
#include <windows.h>
void main()
{
HANDLE hToken;
TOKEN_PRIVILEGES tkp;
//打开当前进程令牌
if(OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY,&hToken) == 0)
{
return ;
}
//查询 SE_SHUTDOWN_NAME 权限的ID
if(LookupPrivilegeValue(NULL,SE_SHUTDOWN_NAME,&tkp.Privileges[0].Luid) == 0)
{
return ;
}
//TOKEN_PRIVILEGES
tkp.PrivilegeCount = 1; //数组个数
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; //特权启用
//提权至 SE_SHUTDOWN_NAME
if(AdjustTokenPrivileges(hToken,false,&tkp,0,(PTOKEN_PRIVILEGES)NULL,0) == 0)
{
return ;
}
//执行关机
if(ExitWindowsEx(EWX_SHUTDOWN|EWX_FORCE,0) == 0)
{
return ;
}
return ;
}