C++/C/c#程序中的程序如何更改Windows中的hosts文件內容? 我知道這聽起來像網絡釣魚,說實話不。如何更改Windows程序中的hosts文件?
回答
hosts文件只是純文本。格式是每行包含IP和IP應解析到的主機名,用空格分隔。 #
表示評論。
實施例:C:\Windows\system32\drivers\etc\hosts
:
# This is a comment-
127.0.0.1 mysuperhost.com
該文件位於這裏。您將(有充分的理由)需要管理員權限來寫入。
該文件通常位於C:\Windows\System32\drivers\etc\hosts
。儘管如此,您應該使用Environment.GetEnvironmentVariable("SystemRoot")
安全地確定系統根目錄,而不是硬編碼C:\Windows
部分。
否則,您可以像寫入任何其他文件一樣寫入它,前提是您擁有適當的權限。
Hosts文件中有一個非常簡單的格式,其中每行可能含有「IP主機」記錄
所有你需要的是普通文件追加:
using (StreamWriter w = File.AppendText(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.System), "drivers/etc/hosts")))
{
w.WriteLine("123.123.123.123 FQDN");
}
要注意的是在默認情況下,你需要提升的權限寫入主機文件...
爲了恢復,最好備份文件並在完成後恢復。
如何在需要時刪除條目? – Volatil3
首先,您應該要求請求以獲得用戶的管理權限。您可以在應用程序中通過您的Program課程來完成。下面的代碼將要求用戶進行管理訪問,然後用戶可以選擇允許或拒絕它。如果他們否認它,這個例子不運行該應用程序。
一旦您的應用程序在管理模式下運行,其純文本格式簡單。你甚至不需要包含在文件中的所有微軟評論,簡單的字符串解析就可以。在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());
}
}
}
請注意,通過在此處複製您的代碼,它將在CC-Wiki下有效發佈。版權塊是無效的。不確定是否要刪除版權區塊或整個答案.... –
我擁有DCOM Productions,我只是複製了文件的全部內容以便快速回答。無論哪種方式都沒有關係,只是用它來給他一個解決他的問題的方法。如果我不想讓他使用我根本不會發布的代碼。 ;) –
好的。 :)只是不想讓你無意中在比你想要的限制較少的許可下釋放你的IP。 –
找到HOSTS文件位置的最準確的方法是閱讀HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\DataBasePath
註冊表項,並附加hosts
到底。
這將始終指向當前機器配置的正確位置,並適用於自Windows NT 4.0以來的所有基於Windows NT的平臺。
不幸的是,對於更現代的操作系統似乎並不是這樣。特別是在Windows 7上,如果更改DataBasePath值,它將不會使用新位置。 –
更改值是否會影響它(或者如果Microsoft甚至支持這樣做)不是問題。 問題是如何編輯當前主機文件,我只是給出了找到所述文件的最可靠的方法。 (假設你沒有在註冊表中搞亂)。 對於給定的目的,這種方法是有效的從Windows NT 4.0直到幷包括Windows 8.1 Update 1 –
作爲一個努力解決這個問題的人,簡單的解決辦法是,將主機文件複製到臨時文件夾中,修改它並將其複製並覆蓋。以管理員身份運行應用程序將是最好的。
...這個答案就像去汽車維修論壇和告訴OP,「簡單的出路是開始步行到達目的地,而不是固定你的車。」 – Shadoninja
- 1. 如何修改iphone程序中的/ etc/hosts文件?
- 2. 更改hosts文件在Ubuntu
- 3. 如何在Windows中從C#程序更改文件權限?
- 4. 如何更改程序文件中的應用程序圖標?
- 5. 如何找回hosts文件
- 6. 如何以編程方式編輯Windows 7/Server 2008中的hosts文件?
- 7. Android hosts hosts文件用途
- 8. 如何使用java程序更改windows中文件夾的顏色/圖標?
- 9. 如何在Windows安裝程序中更改自定義文件夾的路徑?
- 10. 如何監視Windows應用程序背景中的更改文件夾?
- 11. 如何在hosts文件中使用blocksites?
- 12. Windows:如何使用帶有路徑的hosts文件?
- 13. 使用VBScript修改「C:\ Windows \ System32 \ drivers \ etc \ hosts」文件
- 14. 如何更改Windows字體文件夾?
- 15. 如何在程序執行過程中更改文件名
- 16. 如何替換C#上的hosts文件
- 17. 無法更改Android虛擬設備上的hosts文件
- 18. 如何阻止URL與Windows參數hosts文件
- 19. 如何監視Java EE應用程序中的文件更改?
- 20. 如何更改日期格式列文本文件中的Windows
- 21. 如何使用每日更改的文件名更新程序?
- 22. 基於MSI文件名更改Windows應用程序的GUI
- 23. 如何更改Windows Phone 8應用程序的StartPage在C#中
- 24. 如何在Windows 8 rt中更改應用程序的圖標?
- 25. 爲什麼java.net.UnknownHostException需要更改hosts文件?
- 26. 如何通過CMD編輯hosts文件?
- 27. 如何在Windows安裝程序中檢查程序文件的文件夾
- 28. 如何使用任何編程語言編輯/更新主機(etc/hosts)文件
- 29. hosts文件在Fedora
- 30. 忽略hosts文件?
「他的promittion」是什麼意思?另外...你爲什麼想這樣做? –
英語中,請嗎? – Jon
你不想這樣做,請閱讀使用DNS解析主機名 – Alex