الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

معرفة الرقم التسلسلي للوحة الأم

مغلق
بدأه ramos في 16 يوليو 2006 · 16 رد · 1,925 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

يعلم جميع المبرمجين أن من أفضل وسائل حماية البرنامج معرفة الرقم التسلسلي للوحة الأم وأظن أته لا يتبدل بعد كل فورمات

و بالفعل فقد وجدت كودا يعطيك هذا الرقم ولكنه يعمل على vb6 فهل يوجد له بديل على الدوت نت ؟ :P

الكود كالتالي

 

Option Explicit

نكتب في الموديول'
Private Declare Sub GetMem1 Lib "msvbvm50.dll" (ByVal MemAddress As Long, var As Byte)
Private Function GetBIOSDate() As String
	Dim p As Byte, MemAddr As Long, sBios As String
	Dim i As Integer
	MemAddr = &HFEC71
	For i = 0 To 25
		Call GetMem1(MemAddr + i, p)
		sBios = sBios & Chr$(p)
	Next i
	GetBIOSDate = sBios
End Function

وفي الأمر'
Private Sub Command1_Click()
MsgBox GetBIOSDate
End Sub

;)

تم تعديل هذه المشاركة بواسطة ramos في 16 يوليو 2006 في 14:14

1.GIF
#2

أعتقد يمكن عمل ذلك عن طريق WMI

جرب الكود التالي

	   Dim HDinformation As New ManagementObjectSearcher("SELECT * FROM Win32_ComputerSystemProduct")
		Dim HD As ManagementObject
		For Each HD In HDinformation.Get()
			TextBox1.Text = HD("UUID").ToString()
		Next
	End Sub

طبعا ستحتاج للاستيراد بعد إضافة الـ Reference المناسبة

Imports System.Management
Imports System.Management.Instrumentation

وإن لم يعمل حاول البحث في بقية WMI Classes

عن عائشة رضي الله عنها أن النبي صلى الله عليه وسلم قال: إن الله يحب إذا عمل أحدكم عملا أن يتقنه

نعيب زماننا والعيب فينا ... وما لزماننا عيب سوانا

ونهجو ذا الزمان بغير ذنب ... ولو نطق الزمان لنا هجانا

محمد سامر أبو سلو

#3

طريقة الاخ samerselo جيدة

ولى سؤال لماذا الرقم التسلسلى للهارد ديسك لا ينفع فهو لا يتغير كما تظن والذى يتغير هو رقم logicaldrive اى كل بارتشن وحدة

Practice makes perfect 2007*

البرمجة بلا انطباعات

#4

بالنسبة لموضوع الرقم التسلسلي للقرص الصلب أحب أن أوضح أن هناك نوعان من الأرقام التسلسلية للقرص الصلب

1 - رقم خاص بكل قسم Volume وهو ما يتغير عند كل فرمتة ويمكن الحصول عليه من خلال Volume Information كما استطعت من زمان أيام VB6 تغييره كما أشاء بس الكود ضاع مني للأسف

2 - رقم يعطى للقرص الصلب خاص بالشركة المصنعة وهو لايتغير بالفرمتة و لايمكن تغييره إلا بتغيير القرص الصلب ذات نفسه ويمكن الحصول عليه بنفس الطريقة السابقة من خلال WMI

Dim HDinformation As New ManagementObjectSearcher("SELECT * FROM Win32_PhysicalMedia")
	   Dim HD As ManagementObject
	   For Each HD In HDinformation.Get()
		   TextBox1.Text = HD("SerialNumber").ToString()
	   Next

طبعا ستحتاج لنفس الاستيرادات المذكورة في جوابي السابق

تم تعديل هذه المشاركة بواسطة samerselo في 17 يوليو 2006 في 11:40

عن عائشة رضي الله عنها أن النبي صلى الله عليه وسلم قال: إن الله يحب إذا عمل أحدكم عملا أن يتقنه

نعيب زماننا والعيب فينا ... وما لزماننا عيب سوانا

ونهجو ذا الزمان بغير ذنب ... ولو نطق الزمان لنا هجانا

محمد سامر أبو سلو

#5
samerselo كتب:
بالنسبة لموضوع الرقم التسلسلي للقرص الصلب أحب أن أوضح أن هناك نوعان من الأرقام التسلسلية للقرص الصلب

1 - رقم خاص بكل قسم Volume وهو ما يتغير عند كل فرمتة ويمكن الحصول عليه من خلال Volume Information كما استطعت من زمان أيام VB6 تغييره كما أشاء بس الكود ضاع مني للأسف

2 - رقم يعطى للقرص الصلب خاص بالشركة المصنعة وهو لايتغير بالفرمتة و لايمكن تغييره إلا بتغيير القرص الصلب ذات نفسه ويمكن الحصول عليه بنفس الطريقة السابقة من خلال WMI

Dim HDinformation As New ManagementObjectSearcher("SELECT * FROM Win32_PhysicalMedia")
	   Dim HD As ManagementObject
	   For Each HD In HDinformation.Get()
		   TextBox1.Text = HD("SerialNumber").ToString()
	   Next

طبعا ستحتاج لنفس الاستيرادات المذكورة في جوابي السابق

الكود يعطى هذا الخطأ

Object reference not set to an instance of an object.

هل جربتة؟ والمشكلة عندى أم ماذا؟

Practice makes perfect 2007*

البرمجة بلا انطباعات

#6
bedoonline كتب:
الكود يعطى هذا الخطأ

Object reference not set to an instance of an object.

هل جربتة؟ والمشكلة عندى أم ماذا؟

هل استخدمت الاستيرادات المذكورة في المشاركة رقم 2 في هذا الموضوع الكود شغال 100% و إن كنت أذكر جيدا الكود نفسه بالزبط مذكور سابقا في موضوع قديم بالمنتدى

اقتباس
طبعا ستحتاج للاستيراد بعد إضافة الـ Reference المناسبة

Imports System.Management
Imports System.Management.Instrumentation

تم تعديل هذه المشاركة بواسطة samerselo في 17 يوليو 2006 في 12:44

عن عائشة رضي الله عنها أن النبي صلى الله عليه وسلم قال: إن الله يحب إذا عمل أحدكم عملا أن يتقنه

نعيب زماننا والعيب فينا ... وما لزماننا عيب سوانا

ونهجو ذا الزمان بغير ذنب ... ولو نطق الزمان لنا هجانا

محمد سامر أبو سلو

#7

نعم استخدمتها والخطأ يظهر هنا

TextBox1.Text = HD("SerialNumber").ToString

كأن لا توجد خاصية بهذا الاسم ل PhysicalMedia

Practice makes perfect 2007*

البرمجة بلا انطباعات

#8

يمكنك التأكد من الخواص الخاصة بـ Win32_PhysicalMedia من مكتبة msdn مع أنني قمت بتجربة الكود قبل وضعه هنا وهو يعمل بشكل ممتاز

لاحظ أن الاستيرادات المذكورة بحاجة إلى إضافة reference للمكتبة System.Management للمشروع حتى تعمل

عن عائشة رضي الله عنها أن النبي صلى الله عليه وسلم قال: إن الله يحب إذا عمل أحدكم عملا أن يتقنه

نعيب زماننا والعيب فينا ... وما لزماننا عيب سوانا

ونهجو ذا الزمان بغير ذنب ... ولو نطق الزمان لنا هجانا

محمد سامر أبو سلو

#9

مشكورين :lol: لقد حلت مشكلتي و قريبا شأضع إحدى أفضل طرق الحماية تعتمد على الأرقام العشوائية ومن ثمة تحويلها إلى الحرف الذي يقابلها في acsii :^)

1.GIF
#10
samerselo كتب:
يمكنك التأكد من الخواص الخاصة بـ Win32_PhysicalMedia من مكتبة msdn مع أنني قمت بتجربة الكود قبل وضعه هنا وهو يعمل بشكل ممتاز

لاحظ أن الاستيرادات المذكورة بحاجة إلى إضافة reference للمكتبة System.Management للمشروع حتى تعمل

add reference اذا لم تتم لن يسمح لى البرنامج بالتسغيل لانة سيعطى خطأ عدم تعريف قيمة معينة وهى Management والحقيقة انى شغلت البرنامج وحصلت على خطأ ,, أنا استخدم vs.net 2005 , اعتقد ان PhysicalMedia غير مناسبة او انها ستعطى رقم فارغ يعنى ستعطي "" ولا شىء وهو الارجح ان حدث مع من جرب الشفرة.

Practice makes perfect 2007*

البرمجة بلا انطباعات

#11

حدوث خطأ عندك لايعني أن الكود لايعمل مرفق مثال على VB2005 وهو يعمل بشكل رائع

بس عدلت شغلة صغيرة وهي إضافة السيريال لـ ListBox بدلا من وضعه في TextBox في حالة كان مركب عالكمبيوتر أكتر من هارد

وهي صورة للبرنامج بعد تنفيذه على أحد الأجهزة مركب عليه هاردين

21_07_06_12_56_29_1153468589_1.JPG

TestHardSerial.zip

تم تعديل هذه المشاركة بواسطة samerselo في 21 يوليو 2006 في 10:57

عن عائشة رضي الله عنها أن النبي صلى الله عليه وسلم قال: إن الله يحب إذا عمل أحدكم عملا أن يتقنه

نعيب زماننا والعيب فينا ... وما لزماننا عيب سوانا

ونهجو ذا الزمان بغير ذنب ... ولو نطق الزمان لنا هجانا

محمد سامر أبو سلو

#12

انا نزلت برنامج وجربته وهو شغال تمام

شكرا جزيلا

#13

انا نزلت واعطانى نفس الخطأ

شكراً

Practice makes perfect 2007*

البرمجة بلا انطباعات

#14

معناها الهادروير عندك لايدعم هذه القيمة أو أن المستخدم الذي تعمل عليه لايملك الصلاحيات الكافية

عن عائشة رضي الله عنها أن النبي صلى الله عليه وسلم قال: إن الله يحب إذا عمل أحدكم عملا أن يتقنه

نعيب زماننا والعيب فينا ... وما لزماننا عيب سوانا

ونهجو ذا الزمان بغير ذنب ... ولو نطق الزمان لنا هجانا

محمد سامر أبو سلو

#15

حسب علمي فان هناك مشاكل تظهر عند استخدام هارد من نوع ساتا

فهل ياترى هذا هو سبب ظهور الخطأ عند البعض

#16
mbmh كتب:
حسب علمي فان هناك مشاكل تظهر عند استخدام هارد من نوع ساتا

فهل ياترى هذا هو سبب ظهور الخطأ عند البعض

وأنا أعتقد هذا أيضا كما أجبت الأخ سابقا

اقتباس
معناها الهادروير عندك لايدعم هذه القيمة أو أن المستخدم الذي تعمل عليه لايملك الصلاحيات الكافية

بس فينا نمنع ظهور الخطأ في حالة القيم غير المدعومة بإضافة علاقة If للكود للتأكد من أنه يوجد قيمة معادة - يعني بيصير كود قراءة رقم الهاردديسك على الشكل التالي

		Dim HDinformation As New ManagementObjectSearcher("SELECT * FROM Win32_PhysicalMedia")
		Dim HD As ManagementObject
		For Each HD In HDinformation.Get()
			If HD("SerialNumber") IsNot Nothing Then
				TextBox1.Text = HD("SerialNumber").ToString()
			Else
				TextBox1.Text = "Error Getting Information"
			End If
		Next

وهذا الحكي بينطبق على جميع خصائص فئات Classes الـ WMI وليس Win32_PhysicalMedia فقط

عن عائشة رضي الله عنها أن النبي صلى الله عليه وسلم قال: إن الله يحب إذا عمل أحدكم عملا أن يتقنه

نعيب زماننا والعيب فينا ... وما لزماننا عيب سوانا

ونهجو ذا الزمان بغير ذنب ... ولو نطق الزمان لنا هجانا

محمد سامر أبو سلو

#17

جزاكم الله كل خير

*******************************************************

اللهم انصر المسلمين ووحد كلمتهم وألف بينهم واجبر كسرهم وارحم ضعفهم واهد شبابهم وكمل بالحشمة والتقى نساءهم.

اللهم من أراد بالمسلمين خيراً فوفقه لكل خير ومن أراد بهم سوءاً فخذه أخذ عزيز مقتدر واجعله عبرة لمن أراد أن يتذكر أو يعتبر.

*******************************************************

هذا الموضوع مغلق.

مواضيع مشابهة