2015-07-27 3 views
1

Я пытаюсь получить SID основного домена компьютера в Windows с помощью C++. Я сделал это, используя LsaQueryInformationPolicy с параметром PolicyPrimaryDomainInformation. Я открыл политики LSA для этой операции, как указано:Получение первичного домена SID без прав администратора

auto lsaStatus = LsaOpenPolicy(Server, &ObjectAttributes, GENERIC_READ | POLICY_VIEW_LOCAL_INFORMATION, &PolicyHandle); 

Unfortunatelly, используя LSAOpenPolicy requiers права администратора для запуска и для проекта, я работаю, она не может, так как большинство пользователей не будут иметь его , Мой вопрос: есть ли способ получить текущий SID основного домена компьютера, не вызывая права администратора? Если есть, как мне это сделать, используя Visual C++/MFC?

+0

Возможно, GetComputerObjectName следует LookupAccountName и GetWindowsAccountDomainSid? –

ответ

1

Я нашел решение этой проблемы. Оказывается, я сделал неправильное предположение на основе неправильного описания API в MSDN. Как мы можем прочитать here, LsaOpenPolicy, похоже, требует прав администратора, а статья о Access Masks не говорила и не приводила меня нигде, где я мог найти какую-либо информацию о необходимых привилегиях. Однако благодаря переполнению стека пользователя TripShock и его комментариям по аналогичной теме here Я узнал, что на самом деле использование только флага доступа POLICY_VIEW_LOCAL_INFORMATION не вызовет права администратора. Протестировал его в моей программе и виртуальной машине и оказался правдой.

 Смежные вопросы

  • Нет связанных вопросов^_^