السلام عليكم ورحمة الله وبركاته
أريد من برنامجي أن يقوم بإعطاء رقم الهارديسك للمستخدم في صندوق نص
لأني سمعت ان رقم الهارديسك لا يمكن أن يتغير حتى وبعد عمل Format للجهاز
وشكراً
السلام عليكم ورحمة الله وبركاته
أريد من برنامجي أن يقوم بإعطاء رقم الهارديسك للمستخدم في صندوق نص
لأني سمعت ان رقم الهارديسك لا يمكن أن يتغير حتى وبعد عمل Format للجهاز
وشكراً
وعليكم السلام ورحمة الله وبركاته ...
في الواقع يا عزيزي الرقم التسلسلي ( الظاهري ) للهارددسك يتغير مع الفورمات ... ما تبحث عنه هو الرقم الفيزيائي التسلسلي ، وأيضاً تختلف عملية الحصول على الرقم الفيزيائي باختلاف الـ RAID الخاص بالدرايف وإعداداته ...
على كل حال ، جرب هذا الكود لجلب الرقم الفيزيائي للهارد ، ويجب أن تستدعي System.Management أولاً :
Imports System.Management
ضع TextBox واترك الاسم الافتراضي ثم ضع هذا الكود في حدث تحميل الفورم Form_Load :
Dim HardDiskDrive As New ManagementObjectSearcher("select * from win32_DiskDrive")
Dim HardDiskDriveSerial As String
For Each HardDrive In HardDiskDrive.Get
HardDiskDriveSerial = HardDrive("SerialNumber")
TextBox1.Text = HardDiskDriveSerial
Nextأتمنى لك التوفيق
* ملاحظة : إذا لم ينجح الكود فتأكد من أنك قمت بالدخول إلى النظام كـ Administrator ....
* ملاحظة : قم بإضافة المكتبة Management من Project ===== Add reference تحت مسمى : System.Management .
تم تعديل هذه المشاركة بواسطة عاشق للبرمجة في 27 أغسطس 2011 في 16:16
... إذا كنت تعتقد أن مشاركتي مفيده ، الرجاء قم بتقييمي ...

عاشق للبرمجة كتب:وعليكم السلام ورحمة الله وبركاته ...
في الواقع يا عزيزي الرقم التسلسلي ( الظاهري ) للهارددسك يتغير مع الفورمات ... ما تبحث عنه هو الرقم الفيزيائي التسلسلي ، وأيضاً تختلف عملية الحصول على الرقم الفيزيائي باختلاف الـ RAID الخاص بالدرايف وإعداداته ...
على كل حال ، جرب هذا الكود لجلب الرقم الفيزيائي للهارد ، ويجب أن تستدعي System.Management أولاً :
Imports System.Managementضع TextBox واترك الاسم الافتراضي ثم ضع هذا الكود في حدث تحميل الفورم Form_Load :
Dim HardDiskDrive As New ManagementObjectSearcher("select * from win32_DiskDrive") Dim HardDiskDriveSerial As String For Each HardDrive In HardDiskDrive.Get HardDiskDriveSerial = HardDrive("SerialNumber") TextBox1.Text = HardDiskDriveSerial Nextأتمنى لك التوفيق
* ملاحظة : إذا لم ينجح الكود فتأكد من أنك قمت بالدخول إلى النظام كـ Administrator ....
* ملاحظة : قم بإضافة المكتبة Management من Project ===== Add reference تحت مسمى : System.Management .
السلام عليكم
أظن أن هذه الطريقة ستعيد الأرقام التسلسلية لجميع الأقراص (hard disk1,hard disk2, cd drives,...)
و أن علينا اعتماد القراءة الأولى التي يعيدها هذا الكود كالتالي:
Private Function HDD_serial() As String
Dim serial As String = ""
Dim searcher As New ManagementObjectSearcher("SELECT * FROM Win32_PhysicalMedia")
For Each wmi_HD As ManagementObject In searcher.Get()
serial = wmi_HD("SerialNumber").ToString()
Exit For
Next
Return serial
End Function
تم تعديل هذه المشاركة بواسطة byte101 في 28 أغسطس 2011 في 07:49
لاتـُهيئ كفني ما متّ بعد = لم يزل في أضلعي برقٌ و رعدُ
أنــا اسـلامــي ..أنا عزّته = أنا خيل الله نحو النصــر تعــدو
أنــا تــاريـخـي …ألا تعــرفـه = خـالد ينبض في روحــي و سعدُ
لاتـــغرنـك منــي هدأتـــــي = لا يمــوت الثــأر و لــكن يســتعـدُ
لا يغرنـــك نصــلٌ موغـــلٌ = في عروقي …فـأنا منه أحـّـــدُ
إن ما ضُيع في ساح الوغى = في سوى ساحــاتـها لا يــستردُ
الأخ الفاضل : byte101
أحسنت أخي الكريم ، بالنسبة للكود الذي كتبته أنا فيقوم بجلب الرقم التسلسلي للفوليوم وليس الفيزيائي للهارد :blush:
وتأكدت من ذلك من خلال هذا الكود :
Dim ManagementHDQu As New ManagementClass("win32_LogicalDisk")
Dim ManagmentHDCollection As ManagementObjectCollection = ManagementHDQu.GetInstances()
Dim OptGet As String = ""
TextBox1.ScrollBars = ScrollBars.Vertical
For Each strt As ManagementObject In ManagmentHDCollection
OptGet += "حرف المحرك : " & Environment.NewLine & Convert.ToString(strt("Name")) & Environment.NewLine
OptGet += "اسم المحرك: " & Environment.NewLine & Convert.ToString(strt("VolumeName")) & Environment.NewLine
OptGet += "السيريال نمبر للمحرك :" & Environment.NewLine & Convert.ToString(strt("VolumeSerialNumber")) & Environment.NewLine
OptGet += "-----------------------"
OptGet += Environment.NewLineأما الكود الذي كتبته أنت فهو الأصح بلا شك ... لأن الكلاس PhysicalMedia في مكتبة system.management هو المسئول عن ذلك :)
شكرا لك أخي ...
الأخ محمد حياك الله أخي العزيز وأنت بخير إن شاء الله ...
لم يستنى لي تجربة البرنامج ، سأقوم بتجربته وأوافيك بالأخبار ...
تحية عطرة
تم تعديل هذه المشاركة بواسطة عاشق للبرمجة في 28 أغسطس 2011 في 10:29
... إذا كنت تعتقد أن مشاركتي مفيده ، الرجاء قم بتقييمي ...

عاشق للبرمجة كتب:الأخ الفاضل : byte101
أحسنت أخي الكريم ، بالنسبة للكود الذي كتبته أنا فيقوم بجلب الرقم التسلسلي للفوليوم وليس الفيزيائي للهارد :blush:
وتأكدت من ذلك من خلال هذا الكود :
Dim ManagementHDQu As New ManagementClass("win32_LogicalDisk") Dim ManagmentHDCollection As ManagementObjectCollection = ManagementHDQu.GetInstances() Dim OptGet As String = "" TextBox1.ScrollBars = ScrollBars.Vertical For Each strt As ManagementObject In ManagmentHDCollection OptGet += "حرف المحرك : " & Environment.NewLine & Convert.ToString(strt("Name")) & Environment.NewLine OptGet += "اسم المحرك: " & Environment.NewLine & Convert.ToString(strt("VolumeName")) & Environment.NewLine OptGet += "السيريال نمبر للمحرك :" & Environment.NewLine & Convert.ToString(strt("VolumeSerialNumber")) & Environment.NewLine OptGet += "-----------------------" OptGet += Environment.NewLineأما الكود الذي كتبته أنت فهو الأصح بلا شك ... لأن الكلاس PhysicalMedia في مكتبة system.management هو المسئول عن ذلك :)
شكرا لك أخي ...
الأخ محمد حياك الله أخي العزيز وأنت بخير إن شاء الله ...
لم يستنى لي تجربة البرنامج ، سأقوم بتجربته وأوافيك بالأخبار ...
تحية عطرة
شكرا على تعقيبك أخي الكريم،
صراحة أنا وقعت في نفس الخطأ في البداية ثم تداركت ذلك :happy:
بالإضافة إلى أني علقت على ردك على أنه يعيد أكثر من قيمة و لم أنتبه أنك استخدمت win32_LogicalDisk
رب رمية من غير رامٍ!
لاتـُهيئ كفني ما متّ بعد = لم يزل في أضلعي برقٌ و رعدُ
أنــا اسـلامــي ..أنا عزّته = أنا خيل الله نحو النصــر تعــدو
أنــا تــاريـخـي …ألا تعــرفـه = خـالد ينبض في روحــي و سعدُ
لاتـــغرنـك منــي هدأتـــــي = لا يمــوت الثــأر و لــكن يســتعـدُ
لا يغرنـــك نصــلٌ موغـــلٌ = في عروقي …فـأنا منه أحـّـــدُ
إن ما ضُيع في ساح الوغى = في سوى ساحــاتـها لا يــستردُ
شكرا على ردك أخي الكريم ..
فقط ملحوظة بسيطة ، عند تجربة الكود قام بإعطائي الرقم الفيزيائي بوجود بعض المسافات ، لا أعلم ما هو السبب ، فقمت بتنزيل برنامج ديمو يعرض الرقم الفيزيائي وتأكدت من أن الرقم صحيح كما هو مدون على الهارددسك .. إلا أن المسافات ليست موجودة ....
على كل حال المسافات ليست إشكالية طالما أن الرقم صحيح ...
كود بسيط لمسح المسافات للفائدة :
TextBox1.Text = TextBox1.Text.Replace(" ", "")
TextBox1.Text = TextBox1.Text.Trim()شكرا أخي مرة أخرى ...
... إذا كنت تعتقد أن مشاركتي مفيده ، الرجاء قم بتقييمي ...

السلام عليكم ،،
ممكن يكون هذا الكود مفيد ليك :
الأخ الكريم/الأخت الكريمة
السلام عليكم ورحمة الله وبركاته
مرحباً بكم في منتدى الفريق العربي للبرمجة
تأسف إدارة المنتدى لغلق الموضوع وذلك لمخالفته قوانين المشاركات، فقرة استخدام البحث قبل السؤال.
قواعد طرح المشاركات
شاكرين لكم حُسن تعاونكم
.:: Wish to become better and better ::.
هذا الموضوع مغلق.
المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية
جارٍ التحقق من المتواجدين…