AdjustTokenPrivileges error 6 - handle invalid

Please advise why the AdjustTokenPrivileges function below always returns true, thus giving: "AdjustTokenPrivileges error 6" (ie invalid handle)?

stackoverlow is complaining that I didn't explain this enough

I don't know what else to add. I'm new to c++.

HANDLE hToken; OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES, &hToken); SetPrivilege(hToken,L"SeBackupPrivilege",1 ); CloseHandle(hToken); 

BOOL SetPrivilege( HANDLE hToken, // access token handle LPCTSTR lpszPrivilege, // name of privilege to enable/disable BOOL bEnablePrivilege // to enable or disable privilege ) { TOKEN_PRIVILEGES oldtp; /* old token privileges */ TOKEN_PRIVILEGES tp; DWORD dwSize = sizeof (TOKEN_PRIVILEGES); LUID luid; if ( !LookupPrivilegeValue( NULL, // lookup privilege on local system lpszPrivilege, // privilege to lookup &luid ) ) // receives LUID of privilege { printf("LookupPrivilegeValue error: %u\n", GetLastError() ); 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; // Enable the privilege or disable all privileges. if ( !AdjustTokenPrivileges( &hToken, FALSE, &tp, sizeof(TOKEN_PRIVILEGES), (PTOKEN_PRIVILEGES) &oldtp, (PDWORD) &dwSize) ) { printf("AdjustTokenPrivileges error: %u\n", GetLastError() ); //Get error 6 here (ie invalid handle) return FALSE; } if (GetLastError() == ERROR_NOT_ALL_ASSIGNED) { printf("The token does not have the specified privilege. \n"); return FALSE; } return TRUE; } 
2

2 Answers

You should request for TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY and correctly call the function:

if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken)) return FALSE; 

And please: Always check for valid return values!

For a complete example see also: How to Shut Down the System

And just for reference: Your function SetPrivilege was copied from Enabling and Disabling Privileges in C++

&hToken -> hToken if ( !AdjustTokenPrivileges( hToken, FALSE, &tp, sizeof(TOKEN_PRIVILEGES), (PTOKEN_PRIVILEGES) &oldtp, (PDWORD) &dwSize) ) 
1

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

You Might Also Like