我试图找出是否有怎么样的一种方法,使主机名解析为某个IP没有DNS或主机文件修改。
使用C#,我正在从客户端到服务器的请求,但我必须使用主机名的请求,以便证书将正确验证的请求。 然而,我的程序是指没有管理员权限运行,所以我不能修改host文件。 我有正确的IP地址和主机名,是否有任何其他的方式来使计算机主机名解析为IP?
我试图找出是否有怎么样的一种方法,使主机名解析为某个IP没有DNS或主机文件修改。
使用C#,我正在从客户端到服务器的请求,但我必须使用主机名的请求,以便证书将正确验证的请求。 然而,我的程序是指没有管理员权限运行,所以我不能修改host文件。 我有正确的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步:选择“以管理员身份运行”,然后,而里面的记事本,浏览文件夹(/窗/ SYSTEM32 /司机/等),包含主机文件。