微軟宣布,從Windows 10 Insider Preview Build 20185發行到Dev Channel中的Windows Insiders開始,Windows 10客戶現在可以直接從“設置”應用程序直接通過HTTPS(DoH)配置DNS。
微軟于2018年11月宣布在未來的Windows 10版本中增加對DoH協議的支持,同時還保留了基于TLS的DNS(DoT)支持。
DoH允許通過加密的HTTPS連接進行DNS解析,而DoT則通過傳輸層安全性(TLS)協議而不是使用純文本DNS查找來對DNS查詢進行加密。
對于那些不熟悉新的Windows 10頻道名稱的用戶,Microsoft已對Windows Insider程序進行了大修,并于6月29日從發行版轉移到發行頻道,當時:
要升級到新的Windows 10版本的Dev通道中的Windows Insiders可以從Windows Update對話框中檢查新的更新。
由Windows Insider Program高級項目經理Brandon LeBlanc分享,客戶可以使用Windows 10 Dev Channel Build 20185開始的``設置''應用程序配置加密的DNS 。
對于以太網(有線)連接,用戶可以從轉到設置>網絡和Internet>狀態,單擊屬性,然后選擇編輯IP分配或編輯DNS服務器分配后打開的彈出窗口中訪問新控件。
具有Wi-Fi(無線)連接的用戶可以通過單擊其適配器的“屬性”鏈接,然后選擇“ 編輯IP分配”或“ 編輯DNS服務器分配”來打開DoH控件彈出窗口。
根據LeBlanc的說法,通過訪問各個網絡的屬性頁,加密的DNS控件尚不可用。
設置應用程序中的Windows 10 DoH控件
LeBlanc解釋說:“一旦啟用了加密,您可以通過在網絡屬性中查看已應用的DNS服務器并查看它們是否標記為(已加密)”服務器來確認其是否正常工作。
Microsoft還通過手動添加默認自動促銷列表中沒有的具有DoH支持的DNS服務器,提供了有關如何使用自定義DoH服務器的說明。
要檢查您的DNS查詢是否確實被加密,您可以使用PacketMon命令行實用工具來檢查通過端口53(用于未加密的DNS查詢的端口)流向Web的網絡流量-在打開DoH之后,應該幾乎沒有流量。
為此,您必須打開命令提示符或PowerShell窗口,然后運行以下命令以重置PacketMon的網絡流量過濾器,為端口53添加流量過濾器,并開始實時流量記錄:
pktmon filter remove
pktmon filter add -p 53
pktmon start --etw -l real-time
從2020年2月25日開始,Mozilla 默認向所有美國的Firefox用戶推出基于HTTPS的DNS,從而啟用Cloudflare的DNS提供程序,并允許用戶從瀏覽器的網絡選項更改為NextDNS或其他自定義提供程序。
從Chrome 79發行版開始,Google 在所有平臺(Linux和iOS除外)上都進行了有限的DoH試用。但是與Mozilla不同,Google不會自動更改DNS提供程序,而是僅在默認DNS提供程序啟用了DoH的情況下才升級Chrome的DNS解析協議。
在C# WinForms應用程序中,除了通過設計視圖直接在窗體上拖拽控件外,還可以通過代碼來動態地向窗體中添加控件。這種動態添加控件的方式在需要根據用戶交互或程序邏輯動態改變界面時非常有用。
下面是一個簡單的步驟和示例,演示如何在C# WinForms應用程序中通過代碼向窗體中添加控件。
創建WinForms項目:首先,創建一個新的WinForms項目。
打開窗體的代碼視圖:在設計視圖中,雙擊窗體設計器以打開窗體的代碼視圖。
編寫添加控件的代碼:在窗體的構造函數或某個事件處理程序中,編寫代碼來創建新的控件,并設置其屬性。然后,使用Controls.Add
方法將控件添加到窗體的控件集合中。
調整控件的位置和大小:根據需要,設置控件的Location
和Size
屬性來調整其在窗體上的位置和大小。
(可選)添加事件處理程序:如果需要,可以為新添加的控件添加事件處理程序。
下面是一個簡單的示例,演示如何在C# WinForms應用程序的窗體上通過代碼添加一個按鈕控件:
using System;
using System.Windows.Forms;
public class MyForm : Form
{
public MyForm()
{
// 窗體構造函數
InitializeComponent();
// 創建一個新的按鈕控件
Button myButton=new Button();
// 設置按鈕的屬性
myButton.Text="Click me!"; // 設置按鈕文本
myButton.Location=new System.Drawing.Point(50, 50); // 設置按鈕位置
myButton.Size=new System.Drawing.Size(100, 30); // 設置按鈕大小
// 將按鈕添加到窗體的控件集合中
this.Controls.Add(myButton);
// 為按鈕添加點擊事件處理程序
myButton.Click +=new EventHandler(MyButton_Click);
}
// 按鈕點擊事件處理程序
private void MyButton_Click(object sender, EventArgs e)
{
MessageBox.Show("Button clicked!");
}
// Windows 窗體設計器生成的代碼
private void InitializeComponent()
{
this.SuspendLayout();
//
// 窗體設計器生成的代碼
//
this.ResumeLayout(false);
}
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new MyForm());
}
}
在上面的示例中,我們在窗體的構造函數中創建了一個新的按鈕控件,設置了它的文本、位置和大小,然后將其添加到了窗體的控件集合中。此外,我們還為按鈕添加了一個點擊事件處理程序,當按鈕被點擊時會顯示一個消息框。
通過遵循這些步驟和注意事項,你可以在C# WinForms應用程序中通過代碼輕松地向窗體添加控件。