Получение информации о членстве в группах и подразделениях с компьютера конечной точки - PullRequest
1 голос
/ 22 февраля 2011

Введение (пожалуйста, прости меня, если оно длинное): Мой существующий продукт работает на компьютерах конечных точек.Он написан на C # 2.0 (поэтому мы говорим о Win OS) и работает под учетными данными SYSTEM как сервис.У меня также есть программа управления на стороне сервера, которая, помимо других возможностей, отображает дерево домена организации, используя прямое соединение с поставщиком каталогов (Active Directory или Novell).

Однако - теперь я хочу преобразовать вМодель SaaS - это означает, что сервер не будет находиться на хосте внутри организации - поэтому больше нет прямого соединения с провайдером каталогов.

Чтобы все еще иметь возможность строить дерево домена организации, я решил решить эту проблемупроблема с добавлением информации о структуре домена в журналы, которые отправляют мои клиенты.(Если у вас есть идея получше, пожалуйста, дайте мне знать - хотя это еще не вопрос).

Моя проблема - как получить информацию о домене?Я предпринял несколько попыток с библиотеками LDAP и DirectoryServices и сумел извлечь всю информацию, которая мне нужна, от контроллера домена - но только когда пользователь с достаточными учетными данными вошел в систему на компьютере ... Как я могу написать код, который выполняется на конечной точкемашина как услуга и может (по крайней мере) сообщить группе и OU членство машины - и о вошедшем в систему пользователе?

Большое спасибо!

[EDIT:] Что-то найдено!В реестре в разделе [HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Group Policy \ State \ Machine] - «Distinguished-Name» хранится полный путь LDAP компьютера.Мне все еще нужно членство в группе.

Ответы [ 2 ]

0 голосов
/ 12 марта 2011

Можно ли настроить службу для входа в систему как NetworkService?После этого вы сможете запросить каталог, по крайней мере.

0 голосов
/ 22 февраля 2011

Если вы используете System.DirectoryServices, вы можете указать имя пользователя и пароль как часть конструктора DirectoryEntry:

DirectoryEntry de = new DirectoryEntry("domain ldap path",username, password);

Если вы используете System.DirectoryServices.AccountManagement, конструктор для PrincipalContext имеет параметры для домена,пользовательский пароль.Таким образом, вы можете пройти аутентификацию как часть вашего запроса.

PrincipalContext p = New PrincipalContext(ContextType.Domain, DomainName, Username, Password);
...