BOOL EnableDebugPriv( BOOL bAdd )
{
HANDLE hToken = NULL;
LUID SeDebugNameValue;
TOKEN_PRIVILEGES tp;
BOOL rv = FALSE;
if ( OpenProcessToken( GetCurrentProcess(),
TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken ) )
{
if ( LookupPrivilegeValue( NULL, SE_DEBUG_NAME, &SeDebugNameValue ) )
{
tp.PrivilegeCount = 1;
tp.Privileges[0].Luid = SeDebugNameValue;
tp.Privileges[0].Attributes = bAdd ? SE_PRIVILEGE_ENABLED : 0;
rv = AdjustTokenPrivileges( hToken, FALSE, &tp, sizeof(TOKEN_PRIVILEGES), NULL, NULL );
}
CloseHandle( hToken );
}
return rv;
}