關於取硬碟序列號
測試環境:win7 64位
參考:http://www.cnblogs.com/lenmom/p/8556611.html
方法1,結果:5VP9MZ60
ManagementClass mc = new ManagementClass("Win32_PhysicalMedia"); //網上有提到,用Win32_DiskDrive,但是用Win32_DiskDrive獲得的硬碟資訊中並不包含SerialNumber屬性。 ManagementObjectCollection moc = mc.GetInstances(); string strID = null; foreach (ManagementObject mo in moc) { strID = mo.Properties["SerialNumber"].Value.ToString(); break; } textBox1.Text += "硬碟 ID:" + strID;
方法2,結果:4031371149,同方法3,此是10進位制。
ManagementObjectSearcher mos = new ManagementObjectSearcher(); mos.Query = new SelectQuery("Win32_DiskDrive", "", new string[] { "PNPDeviceID", "Signature" }); ManagementObjectCollection myCollection = mos.Get(); ManagementObjectCollection.ManagementObjectEnumerator em = myCollection.GetEnumerator(); em.MoveNext(); ManagementBaseObject moo = em.Current; string id = moo.Properties["Signature"].Value.ToString().Trim(); this.textBox1.Text = id;
方法3,結果:F049D78D,同方法2,一個是10進位制,一個是16進位制
CMD指令:diskpart,具體操作方法百度查。
方法4,結果:5VP9MZ60
使用軟體:Everest.exe
四種方法,共有兩個結果,哪個是對的呢?
其實網上除了c#託管程式碼讀硬碟號外,還有一些win32做好的dll,測試下來也是5VP9MZ60,甚至有人說普通許可權執行和管理員許可權執行得到的結果也不一樣。
最終還是把電腦開啟自己看,結果顯示,S/N: 5VP9MZ60,有圖有真像。