Как определить, программа стартует под админом или нет? Примерно догадываюсь, что путём OpenSamUser -> GetUserAuthData -> ConvertAuthDataToToken, но нигде не могу найти примера применения, или хотя бы что за параметры у этих ф-ций, и как они должны выглядеть (сами параметры в msdn есть, неясно их назначение и вид). Может кто видел пример использования? Спасибо.
взято из MSDN The following example shows checking a token for membership in the Administrators local group. Код (Text): BOOL IsUserAdmin(VOID) /*++ Routine Description: This routine returns TRUE if the caller's process is a member of the Administrators local group. Caller is NOT expected to be impersonating anyone and is expected to be able to open its own process and process token. Arguments: None. Return Value: TRUE - Caller has Administrators local group. FALSE - Caller does not have Administrators local group. -- */ { BOOL b; SID_IDENTIFIER_AUTHORITY NtAuthority = SECURITY_NT_AUTHORITY; PSID AdministratorsGroup; b = AllocateAndInitializeSid( &NtAuthority, 2, SECURITY_BUILTIN_DOMAIN_RID, DOMAIN_ALIAS_RID_ADMINS, 0, 0, 0, 0, 0, 0, &AdministratorsGroup); if(b) { if (!CheckTokenMembership( NULL, AdministratorsGroup, &b)) b = FALSE; FreeSid(AdministratorsGroup); } return(b); }
В разделе wasm\Секреты Win32 есть статья "Ваш друг имперсонация", там это на асме приведёно в пункте "Проверка".