主机名解析而不修改主机文件
本文关键字:主机 修改 文件 | 更新日期: 2023-09-27 18:36:53
我试图弄清楚是否有办法在不修改 DNS 或主机文件的情况下将主机名解析为某个 IP。
使用 C#,我正在从客户端到服务器发出请求,但我必须在请求中使用主机名,以便证书将正确验证请求。但是,我的程序应在没有管理员权限的情况下运行,因此我无法修改主机文件。我有正确的 IP 和主机名,有没有其他方法可以让计算机将主机名解析为 IP?
解决此问题的最简单方法是创建一个有权修改主机文件的服务,然后从主程序调用该服务。该服务运行单个命令并退出。由于服务可以具有提升的状态,因此您基本上可以将管理员权限封装在标准用户程序中。
如果您正在发出 HTTP 请求,则无需解析主机名;在 URL 中使用 IP 地址并在 HTTP 请求中传递主机标头。
HttpWebRequest.Host 属性
更新:抱歉没有看到证书要求。我认为您应该能够在安装过程中修改主机文件(因为安装通常在管理员权限下进行)。添加感兴趣的主机名以指向 127.0.0.1(本地计算机)。然后,您的应用程序可以打开侦听套接字并充当代理,将数据引导到实际的 Web 服务器。这可能有效,也可能无效,具体取决于启用了防火墙的客户端。
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 步。选择"以管理员身份运行",然后在记事本中浏览到包含主机文件的文件夹(/windows/system32/drivers/etc)。