Imports System.Management
Imports Microsoft.Win32
Imports System.Security.AccessControl
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
TextBox1.Text = My.Computer.Info.OSFullName
TextBox2.Text = System.Environment.MachineName
TextBox3.Text = My.Computer.Info.InstalledUICulture.EnglishName
Dim cmicWmi As New System.Management.ManagementObjectSearcher("SELECT*FROM Win32_DiskDrive")
Dim diskid As String 'DigitalID
Dim diskSerialNumber As String ' This we will call it the serial number for the time being
Dim diskModel As String 'serial number
For Each cmicWmiObj As ManagementObject In cmicWmi.Get
diskid = cmicWmiObj("sighature")
diskSerialNumber = cmicWmiObj("serialnumber")
diskModel = cmicWmiObj("model")
Next
Dim x As String
TextBox4.Text = diskSerialNumber
TextBox5.Text = diskid
End Sub
End Class
التصحيح
PHP كود :
Imports System.Management
Imports Microsoft.Win32
Imports System.Security.AccessControl
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
' استرداد معلومات النظام الأساسية
TextBox1.Text = My.Computer.Info.OSFullName ' اسم نظام التشغيل
TextBox2.Text = System.Environment.MachineName ' اسم الجهاز
TextBox3.Text = My.Computer.Info.InstalledUICulture.EnglishName ' اللغة المثبتة
' استعلام WMI للحصول على معلومات القرص الصلب
Dim cmicWmi As New ManagementObjectSearcher("SELECT * FROM Win32_DiskDrive")
Dim diskid As String = "غير متوفر" ' معرف القرص
Dim diskSerialNumber As String = "غير متوفر" ' الرقم التسلسلي للقرص
Dim diskModel As String = "غير متوفر" ' موديل القرص
For Each cmicWmiObj As ManagementObject In cmicWmi.Get()
' التحقق مما إذا كانت القيم متوفرة قبل تعيينها
If cmicWmiObj("Signature") IsNot Nothing Then
diskid = cmicWmiObj("Signature").ToString()
End If
If cmicWmiObj("SerialNumber") IsNot Nothing Then
diskSerialNumber = cmicWmiObj("SerialNumber").ToString().Trim() ' إزالة الفراغات
End If
If cmicWmiObj("Model") IsNot Nothing Then
diskModel = cmicWmiObj("Model").ToString()
End If
' يمكن إيقاف الحلقة إذا كنت تريد فقط أول قرص صلب
Exit For
Next
' عرض القيم في مربعات النصوص
TextBox4.Text = diskSerialNumber
TextBox5.Text = diskid
End Sub
End Class
خطأ في جملة الاستعلام WMI
يوجد خطأ في "SELECT*FROM Win32_DiskDrive" حيث يجب أن تكون "SELECT * FROM Win32_DiskDrive" (يجب أن تكون هناك مسافة بين SELECT و *).
استخدام خاصية غير صحيحة sighature
لا يوجد خاصية باسم sighature في Win32_DiskDrive. الخاصية الصحيحة هي Signature.
التعامل مع القيم null
بعض الأجهزة قد لا تحتوي على SerialNumber أو Signature، لذا من الأفضل التحقق مما إذا كانت القيمة null قبل استخدامها.
عدم استخدام جميع القيم المسترجعة
في حالة وجود أكثر من قرص صلب، فإن الحلقة For Each ستقوم بتحديث القيم إلى آخر قرص صلب فقط. إذا كنت تريد استخدام جميع الأقراص، فمن الأفضل تخزين القيم في متغير List(Of String) أو إظهارها بطريقة أخرى.