EnableDebugPrivilge(CString lpName, BOOL fEnable) 函数源码,提升进程操作权限。
转注:用于解决比如UAC开启后用户权限受限的问题
- BOOL EnableDebugPrivilge(CString lpName, BOOL fEnable)
- {
- HANDLE hObject;
- LUID Luid;
- TOKEN_PRIVILEGES NewStatus;
- if (!OpenProcessToken(GetCurrentProcess(), TOKEN_QUERY | TOKEN_ADJUST_PRIVILEGES, &hObject))
- {
- return FALSE;
- }
- if (LookupPrivilegeValue(NULL, lpName, &Luid))
- {
- NewStatus.Privileges[0].Luid = Luid;
- NewStatus.PrivilegeCount = 1;
- NewStatus.Privileges[0].Attributes = fEnable ? SE_PRIVILEGE_ENABLED : 0;
- AdjustTokenPrivileges(hObject, FALSE, &NewStatus, 0, 0, 0);
- CloseHandle(hObject);
- return TRUE;
- }
- return FALSE;
- }