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