在 C# 中,您可以使用 System.Management 命名空間來訪問 Windows Management Instrumentation (WMI),從而讀取可用的無線網絡信息和連接。以下是如何獲取可用無線網絡和當前連接情況的詳細步驟及示例代碼。
1. 添加引用
在您的 C# 項目中,確保引用了 System.Management 命名空間。
如果您還未添加該引用,在項目中右鍵點擊 “引用”,選擇 “添加引用”,然后勾選 “System.Management”。也可以使用 NuGet 包管理器安裝:
Install-Package System.Management
2. 獲取可用無線網絡
接下來,您可以使用 WMI 查詢獲取計算機上可用的無線網絡(SSID)和當前連接的信息。
示例代碼
以下代碼示例演示了如何獲取可用的無線網絡以及當前連接的信息:
using System;using System.Management;
class Program{
static void Main(string[] args)
{
Console.WriteLine("可用無線網絡列表:");
ListAvailableNetworks();
Console.WriteLine("\n當前連接信息:");
DisplayCurrentConnection();
}
static void ListAvailableNetworks()
{
// WMI 查詢獲取無線網絡適配器的可用網絡
using (var searcher = new ManagementObjectSearcher("SELECT * FROM MSNdis_80211_Ssid"))
{
foreach (ManagementObject network in searcher.Get())
{
// 獲取 SSID
var ssid = network["SSId"];
if (ssid != null)
{
Console.WriteLine($"SSID: {BitConverter.ToString((byte[])ssid).Replace("-", "")}");
}
}
}
}
static void DisplayCurrentConnection()
{
// 查詢當前網絡連接信息
using (var searcher = new ManagementObjectSearcher("SELECT * FROM Win32_NetworkConnection"))
{
foreach (ManagementObject connection in searcher.Get())
{
Console.WriteLine($"連接名稱: {connection["Name"]}");
Console.WriteLine($"連接狀態: {connection["State"]}");
}
}
}}
代碼解析
獲取可用網絡 SSID:
ManagementObjectSearcher 查詢 MSNdis_80211_Ssid 獲取無線網絡適配器的可用網絡。
使用 BitConverter 將 SSID 字節數組轉換為字符串格式輸出。
獲取當前連接信息:
另一組查詢通過 Win32_NetworkConnection 提取當前的網絡連接狀態。
輸出連接名稱和狀態。
運行代碼
將上述代碼復制到一個新的 C# 控制臺應用程序中并運行,您將看到輸出中列出可用的無線網絡和當前連接的信息。
注意事項
確保您的程序具有足夠的權限訪問網絡適配器信息,有時執行可能需要以管理員身份運行。
MSNdis_80211_Ssid 只顯示無線網絡的 SSID,若要獲取更詳細的信息,例如信號強度或網絡安全類型,則需查詢其他相關的 WMI 類或使用相關的網絡庫。
總結
通過使用 WMI,您可以輕松讀取計算機上可用的無線網絡以及當前的連接狀態。以上示例為您展示了如何在 C# 中獲取網絡信息,您可以根據實際需求進行擴展和調整。
該文章在 2024/11/25 11:04:06 編輯過