獲得伺服器硬體信息(CPUID、硬碟號、主板序列號、IP地址等)

来源:http://www.cnblogs.com/zlsyl/archive/2016/03/02/5234812.html
-Advertisement-
Play Games

1 // 註意:首先要在項目中添加引用 System.Management 2 3 using System; 4 using System.Collections.Generic; 5 using System.Linq; 6 using System.Web; 7 using System.Ma



1
// 註意:首先要在項目中添加引用 System.Management 2 3 using System; 4 using System.Collections.Generic; 5 using System.Linq; 6 using System.Web; 7 using System.Management; 8 9 public class Computer 10 { 11 public string CpuID; //CPU的ID 12 public int CpuCount; //CPU的個數 13 public string[] CpuMHZ;//CPU頻率 單位:hz 14 public string MacAddress;//電腦的MAC地址 15 public string DiskID;//硬碟的ID 16 public string DiskSize;//硬碟大小 單位:bytes 17 public string IpAddress;//電腦的IP地址 18 public string LoginUserName;//操作系統登錄用戶名 19 public string ComputerName;//電腦名 20 public string SystemType;//系統類型 21 public string TotalPhysicalMemory; //總共的記憶體 單位:M 22 public string BoardID;// 主板序列號 23 public string BoardType;// 主板型號 24 private static Computer _instance; 25 public static Computer Instance() 26 { 27 if (_instance == null) 28 _instance = new Computer(); 29 return _instance; 30 } 31 public Computer() 32 { 33 CpuID = GetCpuID(); 34 CpuCount = GetCpuCount(); 35 CpuMHZ = GetCpuMHZ(); 36 MacAddress = GetMacAddress(); 37 DiskID = GetDiskID(); 38 DiskSize = GetSizeOfDisk(); 39 IpAddress = GetIPAddress(); 40 LoginUserName = GetUserName(); 41 SystemType = GetSystemType(); 42 TotalPhysicalMemory = GetTotalPhysicalMemory(); 43 ComputerName = GetComputerName(); 44 BoardID = GetBoardID(); 45 BoardType = GetBoardType(); 46 } 47 string GetCpuID() 48 { 49 try 50 { 51 //獲取CPU序列號代碼 52 string cpuInfo = " ";//cpu序列號 53 ManagementClass mc = new ManagementClass("Win32_Processor"); 54 ManagementObjectCollection moc = mc.GetInstances(); 55 foreach (ManagementObject mo in moc) 56 { 57 cpuInfo = mo.Properties["ProcessorId"].Value.ToString(); 58 } 59 moc = null; 60 mc = null; 61 return cpuInfo; 62 } 63 catch 64 { 65 return "unknow "; 66 } 67 finally 68 { 69 } 70 71 } 72 public static int GetCpuCount() 73 { 74 try 75 { 76 using (ManagementClass mCpu = new ManagementClass("Win32_Processor")) 77 { 78 ManagementObjectCollection cpus = mCpu.GetInstances(); 79 return cpus.Count; 80 } 81 } 82 catch 83 { 84 } 85 return -1; 86 } 87 public static string[] GetCpuMHZ() 88 { 89 ManagementClass mc = new ManagementClass("Win32_Processor"); 90 ManagementObjectCollection cpus = mc.GetInstances(); 91 92 string[] mHz = new string[cpus.Count]; 93 int c = 0; 94 ManagementObjectSearcher mySearch = new ManagementObjectSearcher("select * from Win32_Processor"); 95 foreach (ManagementObject mo in mySearch.Get()) 96 { 97 mHz[c] = mo.Properties["CurrentClockSpeed"].Value.ToString(); 98 c++; 99 } 100 mc.Dispose(); 101 mySearch.Dispose(); 102 return mHz; 103 } 104 public static string GetSizeOfDisk() 105 { 106 ManagementClass mc = new ManagementClass("Win32_DiskDrive"); 107 ManagementObjectCollection moj = mc.GetInstances(); 108 foreach (ManagementObject m in moj) 109 { 110 return m.Properties["Size"].Value.ToString(); 111 } 112 return "-1"; 113 } 114 string GetMacAddress() 115 { 116 try 117 { 118 //獲取網卡硬體地址 119 string mac = " "; 120 ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration"); 121 ManagementObjectCollection moc = mc.GetInstances(); 122 foreach (ManagementObject mo in moc) 123 { 124 if ((bool)mo["IPEnabled"] == true) 125 { 126 mac = mo["MacAddress"].ToString(); 127 break; 128 } 129 } 130 moc = null; 131 mc = null; 132 return mac; 133 } 134 catch 135 { 136 return "unknow "; 137 } 138 finally 139 { 140 } 141 142 } 143 string GetIPAddress() 144 { 145 try 146 { 147 //獲取IP地址 148 string st = " "; 149 ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration"); 150 ManagementObjectCollection moc = mc.GetInstances(); 151 foreach (ManagementObject mo in moc) 152 { 153 if ((bool)mo["IPEnabled"] == true) 154 { 155 //st=mo[ "IpAddress "].ToString(); 156 System.Array ar; 157 ar = (System.Array)(mo.Properties["IpAddress"].Value); 158 st = ar.GetValue(0).ToString(); 159 break; 160 } 161 } 162 moc = null; 163 mc = null; 164 return st; 165 } 166 catch 167 { 168 return "unknow "; 169 } 170 finally 171 { 172 } 173 174 } 175 string GetDiskID() 176 { 177 try 178 { 179 //獲取硬碟ID 180 String HDid = " "; 181 ManagementClass mc = new ManagementClass("Win32_DiskDrive"); 182 ManagementObjectCollection moc = mc.GetInstances(); 183 foreach (ManagementObject mo in moc) 184 { 185 HDid = (string)mo.Properties["Model"].Value; 186 } 187 moc = null; 188 mc = null; 189 return HDid; 190 } 191 catch 192 { 193 return "unknow "; 194 } 195 finally 196 { 197 } 198 199 } 200 /// <summary> 201 /// 操作系統的登錄用戶名 202 /// </summary> 203 /// <returns> </returns> 204 string GetUserName() 205 { 206 try 207 { 208 string st = " "; 209 ManagementClass mc = new ManagementClass("Win32_ComputerSystem"); 210 ManagementObjectCollection moc = mc.GetInstances(); 211 foreach (ManagementObject mo in moc) 212 { 213 214 st = mo["UserName"].ToString(); 215 216 } 217 moc = null; 218 mc = null; 219 return st; 220 } 221 catch 222 { 223 return "unknow "; 224 } 225 finally 226 { 227 } 228 229 } 230 string GetSystemType() 231 { 232 try 233 { 234 string st = " "; 235 ManagementClass mc = new ManagementClass("Win32_ComputerSystem"); 236 ManagementObjectCollection moc = mc.GetInstances(); 237 foreach (ManagementObject mo in moc) 238 { 239 240 st = mo["SystemType"].ToString(); 241 242 } 243 moc = null; 244 mc = null; 245 return st; 246 } 247 catch 248 { 249 return "unknow "; 250 } 251 finally 252 { 253 } 254 255 } 256 string GetTotalPhysicalMemory() 257 { 258 try 259 { 260 261 string st = " "; 262 ManagementClass mc = new ManagementClass("Win32_ComputerSystem"); 263 ManagementObjectCollection moc = mc.GetInstances(); 264 foreach (ManagementObject mo in moc) 265 { 266 267 st = mo["TotalPhysicalMemory"].ToString(); 268 269 } 270 moc = null; 271 mc = null; 272 return st; 273 } 274 catch 275 { 276 return "unknow "; 277 } 278 finally 279 { 280 } 281 } 282 string GetComputerName() 283 { 284 try 285 { 286 return System.Environment.GetEnvironmentVariable("ComputerName"); 287 } 288 catch 289 { 290 return "unknow "; 291 } 292 finally 293 { 294 } 295 } 296 297 string GetBoardID() 298 { 299 string strbNumber = string.Empty; 300 try 301 { 302 ManagementObjectSearcher mos = new ManagementObjectSearcher("select * from Win32_baseboard"); 303 foreach (ManagementObject mo in mos.Get()) 304 { 305 strbNumber = mo["SerialNumber"].ToString().Trim('.'); 306 break; 307 } 308 } 309 catch (Exception ex) 310 { 311 strbNumber = "unknow"; 312 } 313 314 return strbNumber; 315 } 316 317 /// <summary> 318 /// 主板型號 319 /// </summary> 320 /// <returns></returns> 321 string GetBoardType() 322 { 323 string st = ""; 324 ManagementObjectSearcher mos = new ManagementObjectSearcher("Select * from Win32_BaseBoard"); 325 foreach (ManagementObject mo in mos.Get()) 326 { 327 st = mo["Product"].ToString(); 328 } 329 return st; 330 } 331 332 333 }

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • win10系統64位快速專業安裝版 V2016年2月 系統下載:http://www.xitongma.com/ Ghost Win10 64位正式裝機專業版2016 微軟向Windows用戶推送了win10正式版更新。與往常一樣,Win10之家利用微軟官方ESD映像文件為大家製作了GHO格式鏡像,
  • 反向代理apache等http資源 配置解釋:
  • 系統CentOS6.2 x86_64 1.yum安裝gcc,flex,m4,python/python-devel,ruby,libevent/libevent-devel,openssl/openssl-devel,bzip2/bzip2-devel,zlib/zlib-devel,bison,a
  • 簡介 VoIP(Voice over Internet Protocol)就是將模擬聲音訊號(Voice)數字化,以數據封包(Data Packet)的型式在 IP 數據網路 (IP Network)上做實時傳遞,最簡單的說法,就是通過網路來模擬我們平時的電話通話。 特點 VoIP最大的優勢是能廣泛
  • 當使用ClaimsIdentity的時候,Asp.Net MVC在生成AntiForgeryToken的時候會預設使用User.Identity中兩種ClaimsType的值:NameIdentifier (http://schemas.xmlsoap.org/ws/2005/05/identity...
  • 面對對象編程七大原則: 1. OCP 全稱:“Open-Closed Principle” 開放-封閉原則 說明:對擴展開放,對修改關閉。 優點:按照OCP原則設計出來的系統,降低了程式各部分之間的耦合性,其適應性、靈活性、穩定性都比較好。當已有軟體系統需要增加新的功能時,不需要對作為系統基礎的抽象
  • C#代碼中時間轉換為2016-01-24 12:12:12需要如下操作: DateTime.Parse(sj).ToString("yyyy-MM-dd HH:m:ss") 但是Oracle中SQL語句中時間轉換為此格式需如下操作: to_date(sj,'yyyy-mm-dd hh24:mi:ss
  • 1.單一職責原則 即:每一個類都只專註於做一件事情 2.里氏替換原則 在對軟體功能沒有影響的前提下 子類可以替換父類出現的位置,我們就稱之為里氏替換原則 3.依賴倒置原則 實現儘量依賴抽象 不依賴實現 4.介面隔離原則 應當為客戶端提供儘量小的單獨介面,而不是總的大的介面 5.迪米特法則 即知識最少
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...