.net - 如何测试主机名是否指本地机器

标签 .net windows security

如果主机名(字符串)解析为本地计算机,谁能想出一种简单的方法在 win32 或 .NET 中判断?如:

"myhostname"
"myhostname.mydomain.local"
"192.168.1.1"
"localhost"

此练习的目标是生成一个测试,以判断 Windows 安全层是否会将对计算机的访问视为本地访问或网络访问

最佳答案

在 .NET 中,您可以:

IPHostEntry iphostentry = Dns.GetHostEntry (Dns.GetHostName ());

然后对于任何主机名,检查它是否解析为 iphostEntry.AddressList 中的 IP 之一(这是一个 IPAddress[])。

这是一个完整的程序,它将检查命令行中传递的主机名/IP 地址:

using System;
using System.Net;

class Test {
    static void Main (string [] args)
    {
        IPHostEntry iphostentry = Dns.GetHostEntry (Dns.GetHostName ());
        foreach (string str in args) {
            IPHostEntry other = null;
            try {
                other = Dns.GetHostEntry (str);
            } catch {
                Console.WriteLine ("Unknown host: {0}", str);
                continue;
            }
            foreach (IPAddress addr in other.AddressList) {
                if (IPAddress.IsLoopback (addr) || Array.IndexOf (iphostentry.AddressList, addr) != -1) {
                    Console.WriteLine ("{0} IsLocal", str);
                    break;
                } 
            }
        }
    }
}

关于.net - 如何测试主机名是否指本地机器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1959172/

相关文章:

.net - Visual Studio 引用管理器 - 程序集框架与 COM 类型库

windows - Windows 中是否有 XEmbed 等效项?

windows - 我可以使用 win32 Setup API 检测 USB 设备何时插入或拔出吗?

c++ - 使用 WideCharToMultibyte 时如何删除控制字符

java - 在不同的 Tomcat Web 应用程序之间共享凭据

c# - 在服务总线后面验证过期的 JWT token

c# - .NET CultureInfo 本地化显示名称

c# - 在正常关闭时处理 ServiceBus QueueClient 中预取的消息

mysql - 如何轻松安全地远程连接到postgres或mysql?

c# - 处理州和国家(或省): best way to implement