首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无需修改主机文件即可解析主机名

无需修改主机文件即可解析主机名
EN

Stack Overflow用户
提问于 2012-06-12 02:24:42
回答 4查看 9.1K关注 0票数 7

我正在尝试弄清楚是否有一种方法可以在不修改DNS或主机文件的情况下将主机名解析为某个IP。

使用C#,我从客户机发请求到服务器,但是我必须在请求中使用主机名,这样证书才能正确地验证请求。但是,我的程序是在没有管理员权限的情况下运行的,所以我不能修改主机文件。我有正确的IP和主机名,有没有其他方法可以让计算机将主机名解析为IP?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-06-12 04:48:40

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

票数 2
EN

Stack Overflow用户

发布于 2012-06-12 02:29:38

如果您正在进行HTTP请求,则不需要解析主机名;在URL中使用IP地址,并在HTTP请求中传递host报头。

更新:对不起,没有看到证书要求。我认为您应该能够在安装过程中修改hosts文件(因为安装通常是在管理员权限下进行的)。添加您感兴趣的主机名,使其指向127.0.0.1 (本地计算机)。然后,您的应用程序可以打开侦听套接字并充当代理,将数据传送到实际的Web服务器。这可能会工作,也可能不会工作,具体取决于启用了防火墙的客户端。

票数 1
EN

Stack Overflow用户

发布于 2016-10-21 13:39:51

代码语言:javascript
复制
   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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10985510

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档