Osv*_*ier 38 .net c# dns sharepoint-2007 .net-2.0
我的计算机位于域(Active Directory)中,我需要动态获取域名.我在互联网上找到了以下代码:
SelectQuery query = new SelectQuery("Win32_ComputerSystem");
using (ManagementObjectSearcher searcher = new ManagementObjectSearcher(query))
{
    foreach (ManagementObject mo in searcher.Get())
    {
        if ((bool)mo["partofdomain"])
        {
            this.Domain = mo["domain"].ToString();
            break;
        }
    }
 }
它完全按照我的意愿工作,并返回我想要的域名(当我以管理员身份登录时).如果用户不是域管理员,我有一个Access denied例外.
有没有人知道如何使用非域管理员用户获取域名?
注意:我在Internet上找到了这个解决方案,System.Environment.UserDomainName;但它只给了我一部分域名.
即我的域名是:something.domain.com
和UserDomainName唯一的回报something.
Pie*_*kel 95
你为什么使用WMI?你不能使用标准的.NET功能吗?
System.Net.NetworkInformation.IPGlobalProperties.GetIPGlobalProperties().DomainName;
Dav*_*dom 23
我将添加一个答案,试图在这里澄清一些事情,因为似乎有些混乱.主要问题是人们提出错误的问题,或者至少不够具体.
当我们谈论计算机的"域"时,我们可能会提到几件事.以下内容并非详尽无遗,但它涵盖了最常见的情况:
这在很大程度上取决于您要做的事情.这个问题的原始海报是寻找计算机的"Active Directory域",这可能意味着他们正在寻找计算机的安全主体或用户的安全主体所属的域.通常,当您尝试以某种方式与Active Directory通信时,您需要这些.请注意,当前用户主体和当前计算机主体不一定在同一个域中.
Pieter van Ginkel的答案实际上是为您提供本地网络堆栈的主DNS后缀(与输出顶部显示的内容相同ipconfig /all).在99%的情况下,这可能与计算机的安全主体和当前经过身份验证的用户的主体所属的域相同 - 但不一定如此.通常,当您尝试与LAN上的设备通信时,无论设备是否与Active Directory有关,这都是您想要的.对于许多应用程序,这仍然是与Active Directory交谈的"足够好"的答案.
最后一个选项,DNS名称,比其他两个更模糊,更模糊.零和无限DNS记录之间的任何地方都可以解析为给定的IP地址 - 并且您不一定清楚您感兴趣的是哪个IP地址.user2031519的答案是指的值HTTP_HOST,这在确定用户如何解析您的HTTP服务器时特别有用为了发送您当前正在处理的请求.如果您尝试使用Active Directory执行任何操作,这几乎肯定不是您想要的.
System.Environment.UserDomainName
这可能是OP想要的,对于这个我们将不得不向Active Directory询问它.
System.DirectoryServices.ActiveDirectory.Domain.GetComputerDomain()
ActiveDirectoryObjectNotFoundException如果本地计算机不是域的一部分,或者无法联系域控制器,则会抛出一个.
这就是Pieter van Ginkel给出的答案.它可能不完全是你想要的,但它很有可能对你来说足够好 - 如果不是,你可能已经知道为什么了.
System.Net.NetworkInformation.IPGlobalProperties.GetIPGlobalProperties().DomainName
这个很棘手,没有单一的答案.如果这就是您所追求的,请在下面发表评论,我将很乐意讨论您的用例并帮助您找出最佳解决方案(并在此过程中扩展此答案).
Tim*_*Tim 14
我在标题中找到了这个问题.如果其他人正在寻找如何获取域名的答案,请使用以下环境变量.
System.Environment.UserDomainName
我知道这个问题的作者提到了这一点,但我乍一看错过了它,并认为其他人可能会这样做.
然后问题的描述是完全限定的域名(FQDN).