Мне нужно определить, работает ли моя программа с полными правами администратора. Под этим я подразумеваю, что если uac включен (для win vista/7), мне нужно определить, действительно ли у программы есть права администратора (например, если пользователь щелкнул правой кнопкой мыши и выбрал "запустить как администратор" ) и не ограничивается uac. Как это сделать на С++?
Обнаруживать, работает ли программа с полными правами администратора
Ответ 1
- Win9x: каждый пользователь "admin"
- NT4: OpenThreadToken/OpenProcessToken + GetTokenInformation (..., TokenGroups,...) на DOMAIN_ALIAS_RID_ADMINS SID в цикле
- 2000+: OpenThreadToken/OpenProcessToken + CheckTokenMembership на DOMAIN_ALIAS_RID_ADMINS SID
Другие альтернативы: IsUserAnAdmin или AccessCheck
Проверка содержимого TOKEN_ELEVATION * в токене не требуется для тестирования текущего процесса, но это полезно, если вам нужно выяснить, может ли пользователь подняться, потому что у него есть разделительный токен и т.д.