首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何更改windows程序中的hosts文件?

如何更改windows程序中的hosts文件?
EN

Stack Overflow用户
提问于 2011-06-30 05:02:34
回答 6查看 24.4K关注 0票数 9

C++/ C/ C#程序如何改变windows中的C:\Windows\System32\drivers\etc\hosts文件内容?我知道这听起来像是网络钓鱼,老实说不是。

EN

回答 6

Stack Overflow用户

发布于 2011-06-30 05:12:43

Hosts文件有一个非常简单的格式,其中每一行都可以包含"ip host“记录

你所需要的就是常规的文件附加:

代码语言:javascript
复制
using (StreamWriter w = File.AppendText(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.System), "drivers/etc/hosts")))
{
    w.WriteLine("123.123.123.123 FQDN");
}

请注意,默认情况下,您需要提升权限才能写入主机文件...

为了恢复,最好对文件进行备份,并在备份完成后将其恢复。

票数 15
EN

Stack Overflow用户

发布于 2011-06-30 05:29:23

首先,您应该向用户请求的管理权限。您可以通过应用程序中的Program类完成此操作。下面的代码将请求用户进行管理访问,然后用户可以选择允许或拒绝。如果他们拒绝,此示例将不会运行应用程序。

一旦您的应用程序在管理模式下运行,它就会显示具有简单格式的纯文本。您甚至不需要文件中包含的所有Microsoft注释,简单的字符串解析就足够了。就HOSTS文件本身而言,MSFT在HOSTS文件中的注释是您真正需要的所有文档。

代码语言:javascript
复制
namespace Setup {
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Windows.Forms;
    using Setup.Forms;
    using System.Security.Principal;
    using System.Diagnostics;

    static class Program {
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main() {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);

            WindowsPrincipal principal = new WindowsPrincipal(WindowsIdentity.GetCurrent());
            bool administrativeMode = principal.IsInRole(WindowsBuiltInRole.Administrator);

            if (!administrativeMode) {
                ProcessStartInfo startInfo = new ProcessStartInfo();
                startInfo.Verb = "runas";
                startInfo.FileName = Application.ExecutablePath;
                try {
                    Process.Start(startInfo);
                }
                catch {
                    return;
                }
                return;
            }

            Application.Run(new ShellForm());
        }
    }
}
票数 14
EN

Stack Overflow用户

发布于 2011-06-30 05:10:34

该文件通常位于C:\Windows\System32\drivers\etc\hosts。不过,您应该使用Environment.GetEnvironmentVariable("SystemRoot")来安全地确定系统根目录,而不是对C:\Windows部件进行硬编码。

否则,您可以像任何其他文件一样写入该文件,前提是您具有适当的权限。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6527229

复制
相关文章

相似问题

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