1. 程式人生 > >修改(調整)本程序許可權

修改(調整)本程序許可權

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、給本程序增加關機許可權