我正在试图找出如何在没有DNS或主机文件修改的情况下使主机名解析为某个IP的方法。
使用C#,我正在从客户端向服务器发出请求,但我必须在请求中使用主机名,以便证书可以正确地验证请求。但是,我的程序是在没有管理员权限的情况下运行的,因此我无法修改主机文件。我有正确的IP和主机名,有没有其他方法可以让计算机将主机名解析为IP?
答案 0 :(得分:2)
看起来解决此问题的最简单方法是创建一个具有修改主机文件权限的服务,然后从主程序调用该服务。该服务运行单个命令并退出。由于服务可以具有提升状态,因此您基本上可以将管理权限封装在标准用户程序中。
答案 1 :(得分:1)
如果您正在发出HTTP请求,则无需解析主机名;使用URL中的IP地址并在HTTP请求中传递主机头。
更新:抱歉没有看到证书要求。我认为您应该能够在安装期间修改hosts文件(因为安装通常在管理员权限下进行)。添加您感兴趣的主机名以指向127.0.0.1(本地计算机)。然后,您的应用程序可以打开侦听套接字并充当代理,将数据传递到实际的Web服务器。根据启用了防火墙的客户端,这可能有效,也可能无效。
答案 2 :(得分:0)
简单回答:没有。
(不幸的是,对于SO而言,答案太简单了。)
答案 3 :(得分:-1)
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;
}
}
答案 4 :(得分:-3)
这对我有用:
步骤1.打开Windows开始菜单,搜索记事本应用程序,然后右键单击记事本图标。
步骤2.选择“以管理员身份运行”,然后在记事本中,浏览到包含hosts文件的文件夹(/ windows / system32 / drivers / etc)。