Обработка учетных записей Azure с помощью поставщика WinNT ADSI для локального компьютера
У меня возникли проблемы с поиском хорошей документации, которая точно объясняет, как учетные записи AzureAD обрабатываются в локальных группах, и я получаю смешанные результаты, из-за чего мне трудно написать надежный API, который дает точные результаты для определения членства в группах для различных типов компьютер.
В этой статье дается хороший обзор возможных путей при использовании
WinNT://<workgroup name>/<computer name>/Administrators
Итак, обычно это что-то вроде:
WinNT://WORKGROUP/MyComputer/Administrators
Если существует учетная запись, присоединенная к Azure Active Directory, даже если сам компьютер не присоединен к Azure Active Directory, эта учетная запись все равно может появляться в различных местах. Например, если Джон Доу настроил свой домашний компьютер с помощью
Однако эта учетная запись на самом деле не известна локальному компьютеру. Просматривая раздел «Управление компьютером», вы не найдете этого пользователя в списке локальных пользователей. Предполагая, что именно он использовался для настройки, он будет найден как член группы локального компьютера.
Перечисление членов
Run-time error '-2147024843 (80070035)':
Automation error
The network path was not found.
Однако мы можем определить SID этого пользователя и вместо этого использовать SID, аналогичный этому формату:
WinNT://S-1-12-1-123456789-1234567890-1234567890-1223456778
Это вернет действительный объект. Однако класс другой; теперь это , а не a, как мы получили, когда перечисляли членов встроенной группы.
Как следствие, если создать новую локальную группу и попытаться добавить пользователя в интерактивном режиме, это не удастся, поскольку в качестве местоположения установлено имя компьютера. Использование не удастся. Однако если добавить участника в новую локальную группу программным способом, можно использовать путь SID AD, чтобы затем успешно добавить ту же учетную запись AzureAD в эту группу.
Когда вы снова откроете членов группы через управление компьютером, теперь будет отображаться
В результате невозможно использовать встроенный
Я надеюсь, что существует лучший способ определить членство в группе даже для учетной записи Azure на компьютере. API уже хорошо работал как для проверки локальных групп в рабочей группе, так и для групп домена на компьютере, присоединенном к домену. Однако учетные записи Azure — это новое звено в механизме.
Насколько я знаю, это как-то связано с провайдером ADS, и, следовательно, особенности получения данных на каких языках не имеют значения, поэтому будет один и тот же ответ, используете ли вы командную строку, WMI, powershell или или API-интерфейсы Win32.