С какими учетными записями по умолчанию привязывается запись каталога, если она работает как служба в Windows - PullRequest
1 голос
/ 01 июля 2011

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

Я провел поиск в Интернете, но не нашел ответа на этот вопрос, когда работал как служба. Любая идея? В любом случае, я мог бы получить эти учетные данные по умолчанию в Power Shell?

1 Ответ

1 голос
/ 02 июля 2011

В сервисном режиме учетными данными по умолчанию для входа в каталог будут учетные данные, которые компьютер использует для входа в домен (так называемый вход в систему с компьютера).Смотрите эту ссылку: https://serverfault.com/questions/61191/what-happens-when-a-computer-joins-an-active-directory-domain.

Сначала я попытался использовать System.Net.CredentialCache :: DefaultNetworkCredentials, чтобы попытаться получить учетные данные по умолчанию, однако я обнаружил, что пользователь и домен все пустые.Из MSDN подтверждается, что мы не смогли просмотреть эту информацию с возвращенными NetworkCredentials.

Поэтому я добавил следующий скрипт vb (получил базовый код по этой ссылке: http://blogs.technet.com/b/heyscriptingguy/archive/2008/05/12/how-can-i-determine-the-distinguished-name-of-the-ou-where-the-logged-on-user-s-user-account-resides.aspx), который будет вызываться из питанияshell, чтобы получить dn текущего пользователя и сохранить его в файл.

Set objSysInfo = CreateObject("ADSystemInfo")
strUserName = objSysInfo.UserName
Set objUser = GetObject("LDAP://" & strUserName)
Wscript.Echo objUser.distinguishedName
Set objFS = CreateObject("Scripting.FileSystemObject")
strTemp = "c:\temp\dn.txt"
Set objOutFile = objFS.CreateTextFile(strTemp,True)    
objOutFile.Write(objUser.distinguishedName)
objOutFile.Close

Затем, когда я запустил его в контексте службы, я обнаружил, что пользователь - это сам мой компьютер, например:

CN=my computer name,OU=Domain computer accounts,DC=domain,DC=local
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...