c#是目前网络我的领域

本文关键字:我的 网络 目前 | 更新日期: 2023-09-27 18:13:00

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

现在,为了访问这个网站,我需要知道我是在域名网络内还是在域名网络外。如果我在内部,我需要通过内部ip访问,否则通过暴露的dns地址。这就是我问堆栈溢出的聪明头脑的地方,如果你们知道一种方法来查看计算机当前连接的网络是否确实是计算机/用户所属的域的网络?

我一直在关注环境。UserDomainName和Domain.GetComputerDomain。从理论上讲,这两种方法都可以帮助我找到域名(没有经过测试,但希望它能起作用),但它们都不能帮助我找到当前网络是否为域名网络。

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

编辑在某种程度上,这个附加组件应该被出售给各种各样的客户,所以我不能依赖于像IP这样简单的东西。解决方案必须是不管计算机连接到什么网络都能工作的。

c#是目前网络我的领域

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

检查计算机名称
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);
            }