احصل على H / D الرقم التسلسلي (وليس ل volumn الرقم التسلسلي) لIDE و SATA

StackOverflow https://stackoverflow.com/questions/535902

  •  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

ونأمل أن يساعد.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top