C#当前网络是我的域名

时间:2015-09-15 12:38:19

标签: c# .net active-directory network-programming

我正在为办公室建立一个附加组件,我将在其中打开浏览器并导航到内部站点,该站点也通过dns公开,以便可以从网络/域外部访问它。

现在,为了访问此站点,我需要知道我是否在域网络内部或外部。如果我在里面,我需要通过内部ip访问,否则通过暴露的DNS地址。 这就是我问堆栈溢出的聪明人,如果你们中的任何人知道一种方法,看看计算机当前是否连接到的网络,确实是计算机/用户所属的域的网络?

我一直在关注Environment.UserDomainNameDomain.GetComputerDomain。这两个都可以帮助我找到域名,理论上(未经过测试,但希望它可以工作),但它们都没有帮助我找出当前网络是否是域网络。

非常感谢任何建设性的反馈!

修改 在某些时候,这个附加组件应该出售给不同的客户,所以我不能依赖于像特定方式看待IP这样简单的东西。 无论计算机连接到何种网络,解决方案都必须能够正常工作。

1 个答案:

答案 0 :(得分:1)

如果您的网络为计算机提供唯一名称,则可以通过

检查计算机名称
Dns.GetHostName();

或者,如果您的网络具有特定唯一的IP标头(所有IP都以10.1开头,或者它们都在Belkin路由器上,其IP以198.2开头),您可以使用

获取所有IP地址
IPAddress[] addr = Dns.GetHostAddresses(Dns.GetHostName());

更新:

显示我公司网络的东西是它的DNS后缀。这对你有用吗?

 NetworkInterface[] adapters = NetworkInterface.GetAllNetworkInterfaces();
            foreach (NetworkInterface adapter in adapters)
            {
                IPInterfaceProperties properties = adapter.GetIPProperties();
                Console.WriteLine(adapter.Description);
                Console.WriteLine("  DNS suffix................................. :{0}",
                properties.DnsSuffix);
                Console.WriteLine("  DNS enabled ............................. : {0}",
                properties.IsDnsEnabled);
                Console.WriteLine("  Dynamically configured DNS .............. : {0}",
                properties.IsDynamicDnsEnabled);
            }