9

C ++ / C / C#プログラムのプログラムはC:\Windows\System32\drivers\etc\hosts、Windowsのファイルコンテンツをどのように変更しますか?正直言って、これはフィッシングのように聞こえますが、そうではありません。

4

6 に答える 6

15

Hosts ファイルの形式は非常に単純で、各行に「ip host」レコードを含めることができます

必要なのは、通常のファイルの追加だけです:

using (StreamWriter w = File.AppendText(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.System), "drivers/etc/hosts")))
{
    w.WriteLine("123.123.123.123 FQDN");
}

デフォルトでは、ホストファイルに書き込むには昇格された権限が必要になることに注意してください...

元に戻すには、ファイルのバックアップを取り、完了したら復元することをお勧めします。

于 2011-06-29T21:12:42.910 に答える
14

まず、ユーザーに管理者の許可を要求する必要があります。これは、アプリケーションの Program クラスを介して行うことができます。以下のコードは、ユーザーに管理アクセスを要求し、ユーザーはそれを許可または拒否するオプションを持っています。拒否された場合、この例ではアプリケーションを実行しません。

アプリケーションが管理モードで実行されると、単純なフォーマットのプレーン テキストになります。ファイルに含まれるすべての Microsoft コメントは必要なく、単純な文字列解析で問題ありません。HOSTS ファイル内の MSFT によるコメントは、HOSTS ファイル自体に関する限り、本当に必要なすべてのドキュメントです。

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());
        }
    }
}
于 2011-06-29T21:29:23.107 に答える
9

ファイルは通常、 にありますC:\Windows\System32\drivers\etc\hostsC:\Windowsただし、パーツをハード コーディングするのではなくEnvironment.GetEnvironmentVariable("SystemRoot")、システム ルート ディレクトリを安全に決定するために を使用する必要があります。

それ以外の場合は、適切な権限があれば、他のファイルと同じように書き込むことができます。

于 2011-06-29T21:10:34.070 に答える
4

hostsファイルはプレーンテキストです。形式は、各行にIPとIPが解決するホスト名が空白で区切られて含まれていることです。#コメントを示します。

例:

# This is a comment-
127.0.0.1    mysuperhost.com

ファイルはここにあります:C:\Windows\system32\drivers\etc\hosts。(正当な理由で)書き込むには、管理者権限が必要です。

于 2011-06-29T21:07:39.837 に答える
2

この問題に苦労した人として、簡単な方法で、hosts ファイルを temp フォルダーにコピーし、それを変更して、上書きして元に戻します。アプリケーションを管理者として実行するのが最適です。

于 2015-08-12T08:41:30.053 に答える