احصل على H / D الرقم التسلسلي (وليس ل volumn الرقم التسلسلي) لIDE و SATA
-
22-08-2019 - |
سؤال
وكيف يمكنني قراءة القرص الرقم التسلسلي الصعب على IDE و SATA يدفع في VB.NET؟ (أنا لا أريد حجم الرقم التسلسلي).
وهذه المعلومات ينبغي أن تجمع لكل من XP و Vista إذا أمكن بدون حقوق إدارية.
المحلول
ويمكنك استخدام WMI (ويندوز إدارة الأجهزة) مثل هذا :
Dim mos As New ManagementObjectSearcher("SELECT * FROM Win32_PhysicalMedia")
For Each mo As ManagementObject In mos.Get()
Dim serial As String = mo("SerialNumber").ToString()
Next
وعلى الرغم من أنني قد قرأت عن الحالات التي يتم إرجاع أي رقم تسلسلي باستخدام WMI. وهناك طريقة أخرى لإنجاز هذا سيكون من خلال منصة الاحتجاج الخدمات (PInvoke).
هذه المقالة يتضمن حمل فيها الأدوات المؤلف <وأ href = " http://msdn.microsoft.com/en-us/library/aa363858(VS.85).aspx "يختلط =" نوفولو noreferrer "> CreateFile () و <لأ href =" HTTP: // MSDN .microsoft.com / EN-US / مكتبة / aa363216 (VS.85) .ASPX "يختلط =" نوفولو noreferrer "> DeviceIoControl () لاستخراج معلومات محرك الأقراص من خلال الخدمات إمكانية التشغيل المتداخل في VB .NET.
لاستخدام أي من الطرق المذكورة أعلاه، ستحتاج حقوق ADMIN، وهي الأداة التي يبدو أن الالتفاف على هذا يمكن العثور على هنا . إذا لديك شعور المغامرة في C ++ / Win32 و شفرة المصدر هو متاح لك للاطلاع. (راجع "ReadPhysicalDriveInNTWithZeroRights () 'وظيفة)
نصائح أخرى
Public Function getHardDiskSerialNo()
Dim serial As String
Dim hd As New ManagementObjectSearcher("SELECT * FROM Win32_PhysicalMedia")
For Each dvs As ManagementObject In hd.Get()
serial = dvs("SerialNumber").ToString()
Next
Return serial
End Function
وهنا هو رمز للحصول على HDD الرقم التسلسلي
Dim HDD_Serial As String
Dim hdd As New ManagementObjectSearcher("select * from Win32_DiskDrive")
For Each hd In hdd.Get
HDD_Serial = hd("SerialNumber")
MsgBox(HDD_Serial)
Next
ونأمل أن يساعد.