我正在尝试弄清楚是否有一种方法可以在不修改DNS或主机文件的情况下将主机名解析为某个IP。
使用C#,我从客户机发请求到服务器,但是我必须在请求中使用主机名,这样证书才能正确地验证请求。但是,我的程序是在没有管理员权限的情况下运行的,所以我不能修改主机文件。我有正确的IP和主机名,有没有其他方法可以让计算机将主机名解析为IP?
发布于 2012-06-12 04:48:40
看起来解决这个问题的最简单方法是创建一个有权修改主机文件的服务,然后从主程序调用该服务。该服务运行单个命令并退出。由于服务可以具有提升的状态,因此您实际上可以将管理员权限封装在标准用户程序中。
发布于 2012-06-12 02:29:38
如果您正在进行HTTP请求,则不需要解析主机名;在URL中使用IP地址,并在HTTP请求中传递host报头。
更新:对不起,没有看到证书要求。我认为您应该能够在安装过程中修改hosts文件(因为安装通常是在管理员权限下进行的)。添加您感兴趣的主机名,使其指向127.0.0.1 (本地计算机)。然后,您的应用程序可以打开侦听套接字并充当代理,将数据传送到实际的Web服务器。这可能会工作,也可能不会工作,具体取决于启用了防火墙的客户端。
发布于 2016-10-21 13:39:51
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;
}
}https://stackoverflow.com/questions/10985510
复制相似问题