獲取本機用戶名、MAC地址、IP地址、硬盤ID、CPU序列號、系統名稱、物理內存

我們在利用C#開發桌面程序(Winform)程序的時候,經常需要獲取一些跟系統相關的信息,例如用戶名、MAC地址、IP地址、硬盤ID、CPU序列號、系統名稱、物理內存等。

首先需要引入命名空間:

using System.Management;  

/// 獲取本機用戶名、MAC地址、內網IP地址、公網IP地址、硬盤ID、CPU序列號、系統名稱、物理內存。
/// </summary>
public class GetSystemInfo
{
/// <summary>
/// 操作系統的登錄用戶名
/// </summary>
/// <returns>系統的登錄用戶名</returns>
public static string GetUserName()
{try{string strUserName = string.Empty;ManagementClass mc = new ManagementClass("Win32_ComputerSystem");ManagementObjectCollection moc = mc.GetInstances();foreach (ManagementObject mo in moc){strUserName = mo["UserName"].ToString();}moc = null;mc = null;return strUserName;}catch{return "unknown";}
}
/// <summary>
/// 獲取本機MAC地址
/// </summary>
/// <returns>本機MAC地址</returns>
public static string GetMacAddress()
{try{string strMac = string.Empty;ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");ManagementObjectCollection moc = mc.GetInstances();foreach (ManagementObject mo in moc){if ((bool)mo["IPEnabled"] == true){strMac = mo["MacAddress"].ToString();}}moc = null;mc = null;return strMac;}catch{return "unknown";}
}
/// <summary>
/// 獲取本機的物理地址
/// </summary>
/// <returns></returns>
public static string getMacAddr_Local()
{string madAddr = null;try{ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");ManagementObjectCollection moc2 = mc.GetInstances();foreach (ManagementObject mo in moc2){if (Convert.ToBoolean(mo["IPEnabled"]) == true){madAddr = mo["MacAddress"].ToString();madAddr = madAddr.Replace(':', '-');}mo.Dispose();}if (madAddr == null){return "unknown";}else{return madAddr;}}catch (Exception){return "unknown";}
}
/// <summary>
/// 獲取客戶端內網IPv6地址
/// </summary>
/// <returns>客戶端內網IPv6地址</returns>
public static string GetClientLocalIPv6Address()
{string strLocalIP = string.Empty;try{IPHostEntry ipHost = Dns.GetHostEntry(Dns.GetHostName());IPAddress ipAddress = ipHost.AddressList[0];strLocalIP = ipAddress.ToString();return strLocalIP;}catch{return "unknown";}
}
/// <summary>
/// 獲取客戶端內網IPv4地址
/// </summary>
/// <returns>客戶端內網IPv4地址</returns>
public static string GetClientLocalIPv4Address()
{string strLocalIP = string.Empty;try{IPHostEntry ipHost = Dns.Resolve(Dns.GetHostName());IPAddress ipAddress = ipHost.AddressList[0];strLocalIP = ipAddress.ToString();return strLocalIP;}catch{return "unknown";}
}
/// <summary>
/// 獲取客戶端內網IPv4地址集合
/// </summary>
/// <returns>返回客戶端內網IPv4地址集合</returns>
public static List<string> GetClientLocalIPv4AddressList()
{List<string> ipAddressList = new List<string>();try{IPHostEntry ipHost = Dns.Resolve(Dns.GetHostName());foreach (IPAddress ipAddress in ipHost.AddressList){if (!ipAddressList.Contains(ipAddress.ToString())){ipAddressList.Add(ipAddress.ToString());}}}catch{}return ipAddressList;
}/// <summary>
/// 獲取客戶端外網IP地址
/// </summary>
/// <returns>客戶端外網IP地址</returns>
public static string GetClientInternetIPAddress()
{string strInternetIPAddress = string.Empty;try{using (WebClient webClient = new WebClient()){strInternetIPAddress = webClient.DownloadString("http://www.coridc.com/ip");Regex r = new Regex("[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}");Match mth = r.Match(strInternetIPAddress);if (!mth.Success){strInternetIPAddress = GetClientInternetIPAddress2();mth = r.Match(strInternetIPAddress);if (!mth.Success){strInternetIPAddress = "unknown";}}return strInternetIPAddress;}}catch{return "unknown";}
}
/// <summary>
/// 獲取本機公網IP地址
/// </summary>
/// <returns>本機公網IP地址</returns>
private static string GetClientInternetIPAddress2()
{string tempip = "";try{//http://iframe.ip138.com/ic.asp 返回的是:您的IP是:[220.231.17.99] 來自:北京市 光環新網WebRequest wr = WebRequest.Create("http://iframe.ip138.com/ic.asp");Stream s = wr.GetResponse().GetResponseStream();StreamReader sr = new StreamReader(s, Encoding.Default);string all = sr.ReadToEnd(); //讀取網站的數據int start = all.IndexOf("[") + 1;int end = all.IndexOf("]", start);tempip = all.Substring(start, end - start);sr.Close();s.Close();return tempip;}catch{return "unknown";}
}
/// <summary>
/// 獲取硬盤序號
/// </summary>
/// <returns>硬盤序號</returns>
public static string GetDiskID()
{try{string strDiskID = string.Empty;ManagementClass mc = new ManagementClass("Win32_DiskDrive");ManagementObjectCollection moc = mc.GetInstances();foreach (ManagementObject mo in moc){strDiskID = mo.Properties["Model"].Value.ToString();}moc = null;mc = null;return strDiskID;}catch{return "unknown";}
}
/// <summary>
/// 獲取CpuID
/// </summary>
/// <returns>CpuID</returns>
public static string GetCpuID()
{try{string strCpuID = string.Empty;ManagementClass mc = new ManagementClass("Win32_Processor");ManagementObjectCollection moc = mc.GetInstances();foreach (ManagementObject mo in moc){strCpuID = mo.Properties["ProcessorId"].Value.ToString();}moc = null;mc = null;return strCpuID;}catch{return "unknown";}
}
/// <summary>
/// 獲取操作系統類型
/// </summary>
/// <returns>操作系統類型</returns>
public static string GetSystemType()
{try{string strSystemType = string.Empty;ManagementClass mc = new ManagementClass("Win32_ComputerSystem");ManagementObjectCollection moc = mc.GetInstances();foreach (ManagementObject mo in moc){strSystemType = mo["SystemType"].ToString();}moc = null;mc = null;return strSystemType;}catch{return "unknown";}
}
/// <summary>
/// 獲取操作系統名稱
/// </summary>
/// <returns>操作系統名稱</returns>
public static string GetSystemName()
{try{string strSystemName = string.Empty;ManagementObjectSearcher mos = new ManagementObjectSearcher("root\\CIMV2", "SELECT PartComponent FROM Win32_SystemOperatingSystem");foreach (ManagementObject mo in mos.Get()){strSystemName = mo["PartComponent"].ToString();}mos = new ManagementObjectSearcher("root\\CIMV2", "SELECT Caption FROM Win32_OperatingSystem");foreach (ManagementObject mo in mos.Get()){strSystemName = mo["Caption"].ToString();}return strSystemName;}catch{return "unknown";}
}
/// <summary>
/// 獲取物理內存信息
/// </summary>
/// <returns>物理內存信息</returns>
public static string GetTotalPhysicalMemory()
{try{string strTotalPhysicalMemory = string.Empty;ManagementClass mc = new ManagementClass("Win32_ComputerSystem");ManagementObjectCollection moc = mc.GetInstances();foreach (ManagementObject mo in moc){strTotalPhysicalMemory = mo["TotalPhysicalMemory"].ToString();}moc = null;mc = null;return strTotalPhysicalMemory;}catch{return "unknown";}
}/// <summary>
/// 獲取主板id
/// </summary>
/// <returns></returns>
public static string GetMotherBoardID()
{try{ManagementClass mc = new ManagementClass("Win32_BaseBoard");ManagementObjectCollection moc = mc.GetInstances();string strID = null;foreach (ManagementObject mo in moc){strID = mo.Properties["SerialNumber"].Value.ToString();break;}return strID;}catch{return "unknown";}
}/// <summary>
/// 獲取公用桌面路徑         

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/448288.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/448288.shtml
英文地址,請注明出處:http://en.pswp.cn/news/448288.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

只用一套解決方案,就可解決80%的交通物流行業信息難題

行業背景 新中國成立70多年來&#xff0c;中國交通運輸總體上已經形成了多節點、全覆蓋的綜合運輸網絡&#xff0c;“五縱五橫”綜合運輸大通道基本貫通&#xff0c;一大批綜合客運、貨運樞紐站場&#xff08;物流園區&#xff09;投入運營&#xff0c;取得了一系列矚目成果&am…

起步

什么是開車起步 起步&#xff0c;即發動汽車&#xff0c;使汽車開始走動。 操作方法 1、“踩”離合器 2、“掛”一檔 3、“打”左轉向燈&#xff08;提醒后車駕駛員注意安全避讓&#xff09; 4、“鳴”號&#xff08;引起車輛周圍的行人或機動車等注意&…

Linux 使用 jstat 命令查看 jvm 的 GC 情況

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 Options&#xff0c;選項&#xff0c;我們一般使用 -gcutil 查看gc情況 vmid&#xff0c;VM的進程號&#xff0c;即當前運行的java進程號…

WKWebview加載本地圖片時出現路徑問題

出現問題情況是&#xff1a;將uiwebview換成wkwebview之后&#xff0c;之前將webview上那些圖片放回本地下載后緩存的圖片沒辦法在webview上找到&#xff0c;最后排查出原因是&#xff0c;wkwebview需要將圖片和網頁文件放在同個路徑下。 具體實現方法如下(獲取圖片緩存的路徑&…

上車準備

上車準備一 1、環視車輛、確保安全。 2、調整駕駛座。身體坐正&#xff0c;雙手向前伸直&#xff0c;以手腕剛好能放在方向盤上為準。左腳擱在離合器上&#xff0c;右腳擱在剎車上&#xff0c;小腿和大腿成90度。左腳可以輕松把離合器踩到底。身體離方向盤20—25厘米。 …

C++復習

register關鍵字請求“編譯器”將局部變量存儲于寄存器中 C語言中無法取得register變量地址 在C中依然支持register關鍵字 1、C編譯器有自己的優化方式&#xff0c;不使用register也可能做優化 2、C中可以取得register變量的地址 C編譯器發現程序中需要取register變量的地址…

Docker 方式安裝 Nginx 、阿里云服務器上裝 Ngnix

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 非 Docker 方式安裝&#xff0c;直接 Linux 安裝見另一文&#xff1a;Linux 上 安裝 nginx 、阿里云服務器上安裝 nginx 1. 直接從鏡像倉…

C#實現A*算法

理解A*尋路算法具體過程 這兩天研究了下 A* 尋路算法, 主要學習了這篇文章, 但這篇翻譯得不是很好, 我花了很久才看明白文章中的各種指代. 特寫此篇博客用來總結, 并寫了尋路算法的代碼, 覺得有用的同學可以看看. 另外因為圖片制作起來比較麻煩, 所以我用的是原文里的圖片. 當…

路考口訣

路考口訣一 一踩&#xff08;踩離合&#xff09;、二掛&#xff08;掛一檔&#xff09;、三看&#xff08;看倒車鏡&#xff09;、四轉&#xff08;轉向燈&#xff09;、五按&#xff08;按喇叭&#xff09;、六手剎、七走 路考口訣二 01.路考之道很輕松&#xff0c;牢…

nfs服務器工作原理

https://www.cnblogs.com/me80/p/7464125.html轉載于:https://www.cnblogs.com/huhuxixi/p/11203049.html

玩轉數據結構——均攤復雜度和防止復雜度的震蕩(筆記)

數據規模 時間復雜度 并不是所有的雙層循環都是O&#xff08;n^2&#xff09;的 復雜度實驗來確定復雜度 // O(N) 兩倍增加 int findMax( int arr[], int n ){assert( n > 0 );int res arr[0];for( int i 1 ; i < n ; i )if( arr[i] > res )res arr[i];return res…

解決:bash: vim: command not found、docker 容器不識別 vi / vim 、docker 容器中安裝 vim

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1. 在 Docker 容器中編輯文件&#xff0c;報錯如下&#xff1a; bash: vim: command not found2. 安裝 vim &#xff1a; apt-get in…

路考

路考基本項目組成 路考即是科目三&#xff0c;是新增加的一個考試項目&#xff0c;基本項目有13項&#xff0c;包括上車準備、起步、直線行駛、變更車道、通過路口、靠邊停車、通過人行橫道線、通過學校區域、通過公共汽車站、會車、超車、掉頭、夜間行駛。 上車準備 …

OpenDDS通訊rtps_discovery對等發現模式的pub和sub匹配的日志

OpenDDS的通訊體系中&#xff0c;提供了豐富的日志輸出&#xff0c;通過日志輸出可以清晰的看到pub和sub方的主題匹配的過程&#xff0c;是加深對OpenDDS過程了解的一個好方法。 下面的日志&#xff0c;以OpenDDS3.8為基礎&#xff0c;增加了部分日志和時間戳輸出。 rtps_dis…

Developing Web Applications with Apache, MySQL, memcached, and Perl

Developing Web Applications with Apache, MySQL, memcached, and Perl轉載于:https://www.cnblogs.com/gavinhughhu/archive/2009/11/02/1594290.html

awk 中 {print $1} 什么意思

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 舉個例子 echo "aa bb cc" | awk -F {print $1} 結果就是aa&#xff0c;意思是把字符串按空格分割&#xff0c;取第一個。aw…

有駕照不等于會開車,教你開車技巧27招

當今有車的人真的是越來越多了&#xff0c;不要以為自己有駕照就是會開車了哦&#xff0c;其實開車還是有很多技巧的。下面就跟小編看下學會那些招數才真算會開車吧。 1、上車先看車 上車前繞車轉一圈&#xff0c;看車的外況、輪胎、車底下有沒有漏油漏水。一個星期還得揭開蓋子…

OpenDDS通訊中rtps_discovery對等發現的基本配置和說明

OpenDDS的對等發現模式中&#xff0c;可以采用組播或單播方式進行發現和基于主題的DataReader和DataWriter的匹配&#xff0c;下面是一個簡單的配置樣例&#xff1a; [common] DCPSGlobalTransportConfig$file ORBDebugLevel0 DCPSDebugLevel3 DCPSTransportDebugLevel0 ORBLo…

用戶使用協議

知乎協議&#xff08;草案&#xff09; 歡迎您來到知乎。 請您仔細閱讀以下條款&#xff0c;如果您對本協議的任何條款表示異議&#xff0c;您可以選擇不進入知乎。當您注冊成功&#xff0c;無論是進入知乎&#xff0c;還是在知乎上發布任何內容&#xff08;即「內容」&#xf…

解決: bash: unzip: command not found、linux 安裝 zip 命令

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1. 執行解壓命令報錯&#xff1a; bash: unzip: command not found 2. 安裝 zip&#xff1a; yum install -y unzip zip 3. 重試成功…