2015-03-27 8 views
0

В первый, я смог получить лес, в котором текущий пользователь зарегистрирован следующим кодом:Как я могу получить лес, в котором зарегистрирована текущая машина?

var lCurrentForest = Forest.GetCurrentForest(); 

Во-вторых, я в состоянии получить домен, в котором тока машина зарегистрировано:

var lCurrentDomain = IPGlobalProperties.GetIPGlobalProperties().DomainName; 

Как я могу получить лес, в котором ток машины зарегистрирован?

+0

'Forest.GetForest (новый DirectoryContext (DirectoryContextType.Domain));'? Я не могу проверить, поскольку я не на домене с AD. – kjbartel

ответ

1

NetGetJoinInformation Win32 API предоставит вам доменное имя машины. Оттуда вы можете подключить его к чему-то вроде этого:

using System.DirectoryServices.ActiveDirectory; 
//... 
var forest = Domain.GetDomain(new DirectoryContext(DirectoryContextType.Domain, <NetGetJoinInformationResult>)).Forest; 
+0

Я могу использовать свой 'IPGlobalProperties.GetIPGlobalProperties(). DomainName;' и передать его в предложенном 'Domain.GetDomain (...). Forest'. Это подходит для меня. – Simon

+0

Так что это будет работать в большинстве случаев, но нет гарантии, что суффикс домена машины соответствует домену AD, к которому он присоединен. –

+0

Благодарим вас за доказательства. Не могли бы вы рассказать мне, почему нет гарантии? У вас есть ссылка на ваше утверждение? – Simon