主机名解析而不修改hosts文件

我试图找出如果有一种方法可以使主机名解析为某个IP而无需DNS或主机文件修改。

使用C#,我正在从客户端向服务器发出请求,但我必须在请求中使用主机名,以便证书可以正确地validation请求。 但是,我的程序是在没有管理员权限的情况下运行的,因此我无法修改主机文件。 我有正确的IP和主机名,有没有其他方法可以让计算机解析主机名到IP?

看起来解决此问题的最简单方法是创建一个具有修改主机文件权限的服务,然后从主程序调用该服务。 该服务运行单个命令并退出。 由于服务可以具有提升状态,因此您基本上可以将管理权限封装在标准用户程序中。

如果您正在发出HTTP请求,则无需解析主机名; 使用URL中的IP地址并在HTTP请求中传递主机头。

HttpWebRequest.Host属性

更新:抱歉没有看到证书要求。 我认为您应该能够在安装期间修改hosts文件(因为安装通常在管理员权限下进行)。 添加您感兴趣的主机名以指向127.0.0.1(本地计算机)。 然后,您的应用程序可以打开侦听套接字并充当代理,将数据传递到实际的Web服务器。 根据启用了防火墙的客户端,这可能有效,也可能无效。

简单回答:不。

(不幸的是,对于SO而言,答案太简单而且很小)。

  public bool ModifyHostsFile(string sEntryIPAddr, string sEntryURL) { try { using (StreamWriter w = File.AppendText(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.System), @"drivers\etc\hosts"))) { w.WriteLine(sEntryIPAddr+" "+ sEntryURL); return true; } } catch (Exception ex) { Console.WriteLine(ex.Message); return false; } } 

这对我有用:

步骤1.打开Windows开始菜单,搜索记事本应用程序,然后右键单击记事本图标。

步骤2.选择“以管理员身份运行”,然后在记事本中,浏览到包含hosts文件的文件夹(/ windows / system32 / drivers / etc)。