开始,当我看到堆栈溢出的问题和挑战,我来解决它。它看起来可能最初简单的,但至少可以说是一种挑战。问题是关于让网络中的所有域名列表和一个喜欢你所看到当您登录到Windows比yourdepartment.yourdomain.com而友好的方式显示它。
所有你所要做的的是指一个COM引用所谓活动DS库,其中包含的IADsNameTranslate接口,可以转换各种格式之间的可分辨名称(DNS)。
{A1}
现在有这个工具,它只是一个让我能得到FQDN格式,轻松地从你进来的最后一个问题是森林的DomainCollection域列表的问题,这是一个DN格式转换,FQDN通过使用String方法容易。我们正在做参考我上面提到的这只能从定义{A2}和FQDN是不是一种选择,因此最简单的将DN的其他格式转换。这里是我怎么。using System.DirectoryServices.ActiveDirectory;
using ActiveDs;
private void ListDomains()
{
string sUserName = "xxxx";
string sPassword = "xxxx";
DirectoryContext oDirectoryContext =
new DirectoryContext(DirectoryContextType.Domain, sUserName, sPassword);
Domain oCurrentDomain = Domain.GetDomain(oDirectoryContext);
Forest oForest = oCurrentDomain.Forest;
DomainCollection oAddDomainsInForest = oForest.Domains;
foreach (Domain oDomain in oAddDomainsInForest)
{
Console.WriteLine(GetName(oDomain.ToString()));
}
}
private string GetName(string sDomainName)
{
try
{
IADsADSystemInfo oSysInfo = new ADSystemInfoClass();
IADsNameTranslate oNameTranslate = new NameTranslateClass();
oNameTranslate.Init((int)ADS_NAME_INITTYPE_ENUM.ADS_NAME_INITTYPE_DOMAIN, sDomainName);
string[] aSplitDN = sDomainName.Split(new Char[] { '.' });
string sDistinguishedName = "";
//Convert Domain Name to Distinguished Name
foreach (string sDomainPart in aSplitDN)
{
sDistinguishedName = sDistinguishedName + "DC=" + sDomainPart + ",";
}
oNameTranslate.Set((int)ADS_NAME_TYPE_ENUM.ADS_NAME_TYPE_UNKNOWN,
sDistinguishedName.Remove(sDistinguishedName.Length - 1));//Remove the last comma
string sFriendlyName = oNameTranslate.Get((int)ADS_NAME_TYPE_ENUM.ADS_NAME_TYPE_NT4);
return sFriendlyName.Replace(@"\", "");
}
catch
{
return "Access Denied";
}
}
如果有一个简单的方法,只是让我知道,但现在这对我的作品!
{A3} {七}