修改(調整)本程序許可權
阿新 • • 發佈:2018-12-03
Windows中的普通程序是有一定許可權的,想要做一些超出許可權的事情,就要提權。比如關機:
#include <stdio.h>
#include <Windows.h>
int main()
{
HANDLE hToken;
TOKEN_PRIVILEGES tkp;
// 獲取當前程序訪問標記
if( OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY, &hToken)==0 )
return FALSE;
// 生成TOKEN_PRIVILEGES結構
LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME,&tkp.Privileges[0].Luid); // 檢視系統許可權特權值,返回資訊到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 )
return FALSE;
// 關閉系統,強制所有應用關閉
if( !ExitWindowsEx( EWX_SHUTDOWN|EWX_FORCE, 0 ) )
return FALSE;
return 0;
}
1、獲取本程序可以修改(調整)許可權的令牌。
2、找到關機許可權值
3、給本程序增加關機許可權
