HANDLE hToken; TOKEN_PRIVILEGES Priv,PrivOld; DWORD cbPriv = sizeof(PrivOld); ZeroMemory(&Priv,sizeof(Priv)); if (!OpenThreadToken(GetCurrentThread(),TOKEN_QUERY|TOKEN_ADJUST_PRIVILEGES,FALSE, &hToken)) { OpenProcessToken(GetCurrentProcess(),TOKEN_QUERY|TOKEN_ADJUST_PRIVILEGES,&hToken ); SetLastError(0); } _ASSERTE(ANYSIZE_ARRAY > 0); Priv.PrivilegeCount = 1; Priv.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; if(!LookupPrivilegeValue(NULL,SE_DEBUG_NAME,&Priv.Privileges[0].Luid)) { WaitForSingleObject(&Priv.Privileges[0].Luid,INFINITE); } LookupPrivilegeValue(NULL,SE_DEBUG_NAME,&Priv.Privileges[0].Luid); AdjustTokenPrivileges(hToken,FALSE,&Priv,sizeof(Priv),&PrivOld,&cbPriv); AdjustTokenPrivileges(hToken,FALSE,&PrivOld,sizeof(PrivOld),NULL,NULL); CloseHandle(hToken);