Windows設置進程權限代碼

 
#include <Windows.h>

BOOL SetPrivilege(LPCTSTR lpszPrivilege, BOOL bEnablePrivilege)
{
	TOKEN_PRIVILEGES tp;
	LUID luid;
	HANDLE tokenHandle;

	if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ALL_ACCESS, &tokenHandle))
	{
		return FALSE;
	}

	if (!LookupPrivilegeValue(NULL, lpszPrivilege, &luid))
	{
		return FALSE;
	}

	tp.PrivilegeCount = 1;
	tp.Privileges[0].Luid = luid;
	if (bEnablePrivilege)
	{
		tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
	}
	else
	{
		tp.Privileges[0].Attributes = 0;
	}

	AdjustTokenPrivileges(
		tokenHandle,
		FALSE,
		&tp,
		sizeof(TOKEN_PRIVILEGES),
		(PTOKEN_PRIVILEGES)NULL,
		(PDWORD)NULL);

	if (GetLastError() != ERROR_SUCCESS)
	{
		return FALSE;
	}

	return TRUE;
}

啓用權限

BOOL bFlag = FALSE;

bFlag = SetPrivilege(SE_RESTORE_NAME, TRUE);

禁用權限

bFlag = SetPrivilege(SE_RESTORE_NAME, FALSE);

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章