![]() |
|
استغلال Sript VBS في الدلفي لاستخراج الرقم التسلسلي للقرص - نسخة قابلة للطباعة +- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum) +-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3) +--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15) +--- الموضوع : استغلال Sript VBS في الدلفي لاستخراج الرقم التسلسلي للقرص (/showthread.php?tid=933) |
استغلال Sript VBS في الدلفي لاستخراج الرقم التسلسلي للقرص - me_delphi - 12-06-2009 هناك دالة اسمها GetVolumeInformation وهي تجلب لنا عدة معلومات من بينها الرقم التسلسلي وهدا مثال لطريقة استعمالها PHP كود : procedure TForm1.Button1Click(Sender: TObject);استغلال Sript VBS في الدلفي لاستخراج الرقم التسلسلي للقرص - محمد عبد العزيز - 12-06-2009 kachwahed كتب :الحصول على الرقم التسلسلي، لكني جربت مكونات MiTeC System Information Component Suite ومكونات أخرى عديدة من هذا النوع وكلها لم لم تف بالغرض ضمن امثلة MiTeC System Information Component Suite هناك مثال اسمه USBEnum جربه وانظر بنفسك استغلال Sript VBS في الدلفي لاستخراج الرقم التسلسلي للقرص - محمد عبد العزيز - 12-06-2009 me&delphi' كتب :هناك دالة اسمها GetVolumeInformation مايسمى Volume Serial Numbers رقم عشوائي يعطيه النظام للPartition عند تهيئتها بFormat http://www.delphi4arab.net/forum/showthread.php?tid=968 استغلال Sript VBS في الدلفي لاستخراج الرقم التسلسلي للقرص - kachwahed - 12-06-2009 بارك ا لله فيكم جميعا شكرا كثيرا أستاذ لقد جربت المكون TGetDiskSerial.3.0.0 أيضا وغيره كثير... كل هذه المكونات تعيد نتائج متشابهة، وليس منها من يعيد الرقم التسلسلي الفيزيائي وليس المنطقي (Logic) فهذا الأخير يمكن الحصول عليه بسهولة باستعمال الدالة GetVolumeInformation كما قال أخي me&delphi وكما ذكرت من قبل. باختصار كل من عنده مكون أو دالة فيقارن نتيجتها مع الـ VBScript السابق، وإن تطابقا فقد وجد الحل ملاحظة هامة: هناك الكثير من الأقراص (FlashDisk) المتداولة بين الناس ليس لها رقم فيزيائي أو قيمته صفر، يعني لو تجرب VBScript السابق يعطيك القيمة 0 أو 1. شكرا كثيرا على تعاونكم، ما زال البحث مستمر وسأوافيكم بالجديد إن شاء الله. استغلال Sript VBS في الدلفي لاستخراج الرقم التسلسلي للقرص - محمد عبد العزيز - 12-06-2009 TGetDiskSerial للحصول على الرقم التسلسلس للقرص الصلب HDD ولا تنفع مع USB Flash Disk كود : http://www.devlib.net/tgetdiskserial.htmإقتباس :يعني لو تجرب VBScript السابق يعطيك القيمة 0 أو 1.كما قلت وكررت مكونات MiTeC تنفع وهذه صورة توضح ذلك مع اثنين USB Flash Disk مختلفين ![]() كما هو واضح بالصورة اضفت صورة تنفيذ VBSلترى ان القرصين مختلفين والسلام عليكم استغلال Sript VBS في الدلفي لاستخراج الرقم التسلسلي للقرص - kachwahed - 12-06-2009 بارك الله فيك أستاذ. لقد أعدت اختبار الرقم التسلسلي للـ USB Disk باستعمال مكون MiTeC والنتيجة ما يلي: - هذا الرقم يبقى ثابت حتى بعد عمل تهيئة (Format) للقرص - هذا الرقم يختلف عن الرقم الذي يصدره VBScript صورة قبل الـ Format ![]() صورة بعد الـ Format ![]() الأقراص التي ليس لها رقم تسلسلي فيزيائي (أو لم يتعرف عليه الجهاز) يكتبها 0 أو 1، ومثل هذه لا يمكن استعمالها للاختبار، هذه الصورة لقرص Flash Kingston له رقم تسلسلي تعريفي ثابت يختلف عن الذي تصدره مكونات MiTeC. ![]() شكرا أستاذ، ولكم جميعا، سأواصل البحث استغلال Sript VBS في الدلفي لاستخراج الرقم التسلسلي للقرص - محمد عبد العزيز - 12-06-2009 الرقم الذي يظهره MiTEC هو الرقم التسلسلي Serial Number للUSB Flash Disk يضعه المصنع وهو موجود بكل الFladh Disk باختلاف انواعها وهذه صورة اخرى باستعمال بريمج مايكروسوفت الشهير USBView
استغلال Sript VBS في الدلفي لاستخراج الرقم التسلسلي للقرص - kachwahed - 14-06-2009 وجدت ما كنت أبحث عنه: WMI أو ما يعرف بـ Windows Management Instrumentation هي إضافة من Microsoft تسمح بالتعرف على المعلومات الإدارية للحاسب وأدواة النظام...للمزيد wikipedia الكود VBScript الذي طرحته سابقا يستعمل استعلام SQL للحصول على المعلومات بهذه التقنية، ويمكن تغيير الاستعلام : كود : Select * from Win32_DiskDrive where caption like '%USB%'كود : Select * from Win32_DiskDriveكود : On Error Resume Next
MyComputer = "."
Set obj = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & MyComputer & "\root\cimv2")
Set columns = obj.ExecQuery("Select * from Win32_DiskDrive")
For Each item in columns
Wscript.Echo "DeviceID: " & Item.DeviceID
Wscript.Echo "Model: " & Item.Model
Wscript.Echo "Description: " & Item.Description
Wscript.Echo "Size: " & Item.size
Wscript.Echo "Partitions: " & Item.Partitions
Wscript.Echo "Manufacturer: " & Item.Manufacturer
Wscript.Echo "TotalCylinders: " & Item.TotalCylinders
Wscript.Echo "TotalSectors: " & Item.TotalSectors
Wscript.Echo "TotalTracks: " & Item.TotalTracks
Wscript.Echo "SectorsPerTrack: " & Item.SectorsPerTrack
Next![]() وكما حصلنا على بيانات القرص بنفس الطريقة يمكن الحصول على معلومات أخرى حول النظام: Process و Registry وغير ذلك... المكونات التجارية WmiSet Component Collection For Delphi, C++Builder مخصصة لمثل هذا الغرض، للتحكم في النظام والشبكة و... الموقع: كود : http://www.online-admin.com/wmiset.htmlوفي المرفقات نسخة كاملة للمكونات مع الأمثلة، وملف تطبيقي كمثال. بارك الله في الأستاذ DeltaAziz وشكرا لكم جميعا. استغلال Sript VBS في الدلفي لاستخراج الرقم التسلسلي للقرص - MjIrIm - 14-06-2009 في البداية السلام عليكم
الحمد لله أنك وصلت لمبتغاك أخي العزيز kachwahed فالحصول على نتيجة بعد بحث طويل مهم جدا أسف لكوني لم أبحث كثيرا معك لكثرة المشاغل هذه الفترة و سابقا كنت أعلم بوجود المكونات التي ذكرت سابقا لكني اردت ادراج وحدة تقوم بهذه الوظيفة فكانت تدخلاتي سريعة المهم ان تعم الفائدة للجميع حياك الله بالتوفيق لك و السلام. استغلال Sript VBS في الدلفي لاستخراج الرقم التسلسلي للقرص - me_delphi - 15-06-2009 بارك الله فيكم أتمنى لو كانت هناك وحدة لهدا الغرض دون اللجوء الى dll أو مكونات أو شيء آخر |