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

Windows Management Instrumentation

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

السلام عليكم ورحمة الله وبركاته

من فتره كبيره يمكن من منذ بداية تعلمي للدوت نت , احتفظت بكود يقوم بجلب السريال بتاع الهارد علي أمل ان الواحد ممكن يحتاجه وطبعا مكنتش فاهم منه حاجه :

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

قلت ألقي نظره علي الكود ده اللي محتفظ بيه من مده , وطبعا أنا لم أتعامل مع هذه الـ Management Namespace في الدوت نت قبل كده , فبدأت أبحث في الـ MSDN والكتب اللي عندي عن أي شئ يفيدني علشان أفهم الحوار ده ماشي ازاي , وفعلا قضيت اليوم بكامله علشان أفهم ..., بس مش علشان أفهم الكود ده (الكود سهل وبسيط) , لكن قضيت اليوم كله علشان أفهم الـ WMI , CIM وهي اختصارا للمصطلحات الـ Windows Management Instrumentaion و الـ Component Information Model , صحيح مفهمتش 100% ولاحتي 75% لكن يعني الي حد ما فهمت ما علاقه هذه المصطلحات ببعضها , وقلت أكتب فيهم درس صغير علي قدي حتي علشان تثبت المعلومات في دماغي , لأن الموضوع طلع كبير جدا ومش سهل ,

قبل الدخول في شرح الكود السابق .. يجب معرفة معني المفاهيم التي ذكرناها ,

CIM (Common Information Model) :

هي عباره عن نموذج يحتوي علي معلومات مثل معلومات عن الـ Hard Disk و الـ Bios و الـ Processor و الـ Applications و الـ Network والـ Devices وغيرها ..., وهي تتألف منNamespaces, Classes لها خصائص كائنية التوجه مثل الـ Inheritance, Polymorphism ,

WMI (Windows Management Instrumentation) :

هي عباره عن جزء من النظام يمكنك من استخدام الـ CIM للتعامل مع المعلومات التي تقدمها , أي انها هي الصوره التي تمكن المبرمج من استخدام الـ CIM وذلك بعدة طرق كالآتي :

COM API for WMI :C or C++ applications
Scripting API for WMI : 
   1 - Scripting Languages like : VBS , JS , ActiveX script hosting
   2 - Visual Basic .
   3 - Active Server Pages.
.NET Framework applications written in C#, Visual Basic .NET, or J# : System .Management.

وبالتأكيد يكون التعامل مع هذه المعلومات التي يقدمها النموذج أفضل باستخدام الـ COM API ولكنه ليس الطريق السهل , أما عن الطريق الثاني Scripting API فهو فعلا الطريق السهل ولكنه بالتأكيد ليس بقوة الطريق الأول , ولحسن الحظ قامت ميكروسوفت بتقديم حل يغني عن الطريقين السابقين ويتمثل في الـ Management Namespace ,

WQL (WMI Query Language) :

هي لغة استعلام تستخدم لتسهيل التعامل مع المعلومات التي يقدمها الـ WMI باستخدام نموذج الـ CIM ,

الموضوع كبير جدا ولكن باذن الله سأحاول تقديم كل ما أستطيع تقديمه , وللحصول علي معلومات أكثر يمكنك البحث في الـ MSDN ,

أخشي أن يكون شرحي يحتوي علي أخطاء فان وجدت خطأ فلا تتردد في تصحيحه , والي اللقاء في الدرس التالي ,,,

تم تعديل هذه المشاركة بواسطة hazzoom في 7 مارس 2006 في 03:42

1
#2

يا اما أنا شرحي وحش يا اما الموضوع سهل جدا وكل الأعضاء محترفين وفاهمين الكود :unsure:

تم تعديل هذه المشاركة بواسطة hazzoom في 6 مارس 2006 في 21:47

#3

شكرا لك أخ حزوم بداية موضوع جيدة أرجو المتابعة

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

تم تعديل هذه المشاركة بواسطة hazzoom في 7 مارس 2006 في 03:38

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

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

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

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

#4

بص يا ريس انا محتاج الموضوع ده اوي لانه مش متداخل في البرمجة بس بس ده رامي في موضوع ال SMS و ال inventory و ال data cllection الخاصة بيه و كل الاستعلامات المتقدمة قائمة عليه و النبي زء بس براحة الا انا برضوا حاولت افهم الموضوع بس معرفتش و كنت مشغول

سيري يا نورماندي

Mahmoud Magdy

MVP - Exchange Server. MCITP (Windows Server 2008, Exhcange Server 2010,/2007),CCNP, MCTS(OCS 2007 R2, SCCM 2007)

Tech Lead

Ingazat Information Technology

Follow me on twitter: http://www.twitter.com/_busbar

my blog: http://autodiscover.wordpress.com

Link with me on linkedin: http://www.linkedin.com/profile?viewProfile=&key=71027694

or on experts-exchange.com: http://www.experts-exchange.com/M_1426100.html

#5

السلام عليكم ورحمة الله وبركاته

في الدرس السابق ذكرنا ترجمة ومعاني مصطلحت التقنيات المستخدمه في الكود (البسيط) الذي يقوم بجلب سريال الهارد , ولكن هذه المعلومات لا تكفي ولا تشرح بالضبط ما يحدث , لذا سنقوم بعمل تحليل بسيط للكود لكي نستطيع أن نحصل علي عناصر ندخل منها في صلب الموضوع :

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

في السطر الأول من الكود قمنا بانشاء Object من الـ Class ManagementObjectSearcher , وأبسط طريقه للتعامل مع الـ Constructor الخاص بهذه الـ Class هو اعطائها جملة استعلام WMI Query , وفي حالتنا هذه كانت الجملة :

SELECT * FROM Win32_PhysicalMedia

هذه الجملة تقوم بجلب بيانات من .... ؟؟؟ من ماذا ... ؟؟؟

هذه الجملة تقوم بجلب المعلومات من Class تسمي بـ Win32_PhysicalMedia ....!!! ما هذا الكلام الغريب ؟؟؟ أين توجد هذه الـ Class حيث اني لم أشاهد Class بهذا الاسم أو الشكل الغريب في الـ Framework Class Library , نعم فهي لا توجد داخل الـ FCL وانما توجد داخل الـ CIM , فلقد قلنا أنه يتكون من Classes كائنية التوجه Object-Oriented , وهذه الـ Classes هي التي تحوي المعلومات التي تحدثنا عنها , اذن لقد بدأت صورة الـ CIM تتضح لمن لم يفهمها من الدرس الأول ,

ولكن حتي الآن لم نفهم باقي الكود وكيف يتم استخراج تلك المعلومات من هذه الفصائل عن طريق الـ WQL , ولماذا استخدمنا الـ For Each ,

في السطر الثاني من الكود قمنا بتعريف Object من الـ Class ManagementObject , وما علاقة هذا بالموضوع ؟؟؟ سنعرف السبب ,

في السطر الثالث قمنا بعمل For Each Loop للحصول علي عناصر الـ Collection التي تعود بها الـ Function Get الخاصه بالعنصر HDinformation وهذه العناصر من النوع ManagementObject , آه لذلك قمنا بتعريف العنصر HD من الـ Class ManagementObject ,

الآن عن طريق الـ For Each Loop يمكن الحصول علي البيانات والمعلومات التي تعود بها جملة الـ WQL Select , وفي السطر الموجود داخل الـ Loop قمنا بوضع الداله التي تعود بسريال الهارد ديسك بعد تمرير اسم الخاصيه التي نريد أن نعرف معلومات عنها , خاصيه هل تقول خاصيه ...؟؟؟

نعم خاصيه لأنه توجد خصائص لهذه الـ Classes التي تحتوي علي البيانات وهذا ما سنتحدث في الدرس القادم ان شاء الله ...,,,

أرجو أن تكون الصوره قد اتضحت قليلا , بعد شرح الكود , وفي الدرس القادم سأضع روابط تفيد الموضوع أكثر فتابعوني ,,,

تم تعديل هذه المشاركة بواسطة hazzoom في 7 مارس 2006 في 05:47

#6

يا عم busbar انت قومت الموضوع في دماغي رحت عملت بحث عن علاقة الـ WMI بالـ SMS لكن تهت شوية (لا مش شوية دا أنا تهت عالآخر) لو تعرف أي حاجه عنها قول ربنا يكرمك :wacko:

#7

SMS !!!!!!!!!!!

#8

System management server

اصل الكلاينت تقوم بارسال الداتا التي قامت بتجميعها الى الاس ام اس و من خلال الاس ام اس هناك استعلامات مخزنة ممكن اعرف مثلا مين الاجهزة اللي عليها دي في دي مثلا

لكن مثلا لو اردت اعرف على انهي جهاز مين المستخدمين اللي خشوا عليه ؟؟؟ اها WMI

لو عايز اعرف خواص معينة عن الهاردوير اديلو WMI .

انا برضوا تايه و مفيش دليل بس اعتقد انه في كتاب اسمه

sms scripting guide بتاع ماكيروسوفت اعتقد انه فيه الحل بس انا اتنفخت مش قادر ابص فيه انه ال planning guide مورمني

Mahmoud Magdy

MVP - Exchange Server. MCITP (Windows Server 2008, Exhcange Server 2010,/2007),CCNP, MCTS(OCS 2007 R2, SCCM 2007)

Tech Lead

Ingazat Information Technology

Follow me on twitter: http://www.twitter.com/_busbar

my blog: http://autodiscover.wordpress.com

Link with me on linkedin: http://www.linkedin.com/profile?viewProfile=&key=71027694

or on experts-exchange.com: http://www.experts-exchange.com/M_1426100.html

#9

طب يا ريت تحط روابط أي Recources ممكن تفيد في موضوع الـ SMS ,

الدرس الجاي هيتناول الـ System.Management Namespace بصوره أكبر , ربنا يسهل ,

بس أنا مستغرب الموضوع مش عاجب الأعضاء ولا ايه ولا محدش فاهم من شرحي ولا ايه الحكاية بالظبط !!!

#10

بصراحه الموضوع حلو , ولكن متقدم بعض الشئ , ولكن ارجو منك ان تواصل ..

لا إله الإ الله وحده لا شريك له الملك وله الحمد يحي ويميت وهو على كل شئ قدير

------------------------------------------------------------------------------------------------

gazabigBanner.jpg

------------------------------------------------------------------------------------------------

#11

السلام عليكم ورحمة الله وبركاته

في الدرس السابق قمنا بشرح الكود الذي يقوم بجلب سريال الهارد ديسك عن طريق جملة الـ WQL وعرفنا أنها تبحث في الـ Class التي تسمي

Win32_PhysicalMedia وهذه هي احدي الـ Win32 Classes أنظر الرابط لتعرف أكثر عنها :

WMI Administrative Tools

لو تجولت في الرابط لوجدت Classes يمكنك استخدامها لمعرفة الكثير من المعلومات عن الـ Hardware الخاص بالجهاز ,

الآن نتعرف أكثر علي الـ Class ManagementObject :

اكتب معي الكود التالي :

Dim x As New Management.ManagementObject("Win32_WMISetting=@")

في السطر السابق قمنا بانشاء عنصر من الـ Class ManagementObject , وأبسط صوره للـ Constructor لهذه الـ Class هي أن يأخذ اسم الـ

Win32 Class متبوعا بـ "@=" حتي يتعرف الكائن الـ ManagementObject علي ان هذه الـ Class تكون Singleton , ومعني انها أي ان لها

Instance واحد , أي انها وحيده وفريده أي Unique ,

بعد ان انشأنا هذا العنصر ما الذي يمكننا هذا العنصر من عمله بهذه الـ Win32 Class .. ؟؟؟

يمكننا التعرف علي خواص هذه الـ Class كالآتي :

Dim xx As Management.PropertyData
For Each xx In x.Properties
       MsgBox(xx.Name)
Next

في الكود السابق قمنا بتعريف عنصر من الـ PropertyData Class , ثم قمنا بعمل For Each Loop للحصول علي خواص الـ Win32 Class ,

جرب الكود وأنظر النتيجة ......,

يمكنك التعرف أكثر علي الـ Win32 Classes من خلال WMI Studio وهو جزء من WMI Tools , ويمكنك تنزيله من موقع ميكروسوفت من

الرابط :

Win32 Classes

#12

باشا البتاع جامد نزلت الاستوديو الكود اللي فوق مشتغلشي بس الكود في الاستوديو اشتغل

select * from Win32_BIOS

و ده قام بارجاع خصائص البيوس

انا عندي الكتاب بتاع كيفية وضع الكود بتاع ال wmi في فيجوال بيسك سكريبت بس مفهمتش منه حاجة بس كده ابتدت تبان حبة حبة

سيري يا نورماندي

Mahmoud Magdy

MVP - Exchange Server. MCITP (Windows Server 2008, Exhcange Server 2010,/2007),CCNP, MCTS(OCS 2007 R2, SCCM 2007)

Tech Lead

Ingazat Information Technology

Follow me on twitter: http://www.twitter.com/_busbar

my blog: http://autodiscover.wordpress.com

Link with me on linkedin: http://www.linkedin.com/profile?viewProfile=&key=71027694

or on experts-exchange.com: http://www.experts-exchange.com/M_1426100.html

#13

الاخ العزيز hazzoom

بعد التحية

ارجو منك التكرم باعلامى الطريقة الصحيحة لتنقيذ الكود الخاص باحضار السيريال الخاص بالهارد ديسك لاننى حديث العهد مع الدوت نت ولما جربت الكود الذى كتبته لم اجد اى نتيجة ولم يشتغل نهائيا

ولا اعلم السبب

ولك جزيل الشكر

عصام

#15

شكرا لك أخ حزوم شرح رائع يرجى المواصلة

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

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

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

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

#16

ايه يا حازم متكمل !!!!

Mahmoud Magdy

MVP - Exchange Server. MCITP (Windows Server 2008, Exhcange Server 2010,/2007),CCNP, MCTS(OCS 2007 R2, SCCM 2007)

Tech Lead

Ingazat Information Technology

Follow me on twitter: http://www.twitter.com/_busbar

my blog: http://autodiscover.wordpress.com

Link with me on linkedin: http://www.linkedin.com/profile?viewProfile=&key=71027694

or on experts-exchange.com: http://www.experts-exchange.com/M_1426100.html

#17

بسم الله الرحمن الرحيم

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

http://www.classdotnet.com/Management.html

#18

الف شكر لك اخي حازم انا صحيح ما فهمتش 100% لن باين على الموضوع جميل جدا اذا بتعرف اسم كتاب عن هذا الموضوع يا ريت تعطيني اسمه عشان ابلش من الصفر وتابع الدروس

تعلم:كيف تشغل برنامجك (قبل) ما يشتغل ال explorer, مثل ال check desk في الوندوز 98 و me

اللهم عطر يومنا بالايمان وانر قلبنا بالقرآن ورزقنا من حيث لانحتسب واجعل لنا سكينة تطمئن بها روحنا واحفظنا من كل سوء اللهم بارك لنا في رجب وشعبان وبلغنا رمضان آمين يارب العالمين

ranneh.com

#19

انت طلعت سكالانس يا حازم

Mahmoud Magdy

MVP - Exchange Server. MCITP (Windows Server 2008, Exhcange Server 2010,/2007),CCNP, MCTS(OCS 2007 R2, SCCM 2007)

Tech Lead

Ingazat Information Technology

Follow me on twitter: http://www.twitter.com/_busbar

my blog: http://autodiscover.wordpress.com

Link with me on linkedin: http://www.linkedin.com/profile?viewProfile=&key=71027694

or on experts-exchange.com: http://www.experts-exchange.com/M_1426100.html

#20
اقتباس
اذا بتعرف اسم كتاب عن هذا الموضوع يا ريت تعطيني اسمه عشان ابلش من الصفر وتابع الدروس

Apress - .NET System Management Services

اقتباس
انت طلعت سكالانس يا حازم

تقصد ايه يا محمود ؟؟؟ -_-

عامة , معلش يا جماعة سامحوني علي عدم المواصله , مكتئب شويه , ولما أفوق هكمل ان شاء الله ,,,

تم تعديل هذه المشاركة بواسطة hazzoom في 20 مارس 2006 في 01:13

#21

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

Mahmoud Magdy

MVP - Exchange Server. MCITP (Windows Server 2008, Exhcange Server 2010,/2007),CCNP, MCTS(OCS 2007 R2, SCCM 2007)

Tech Lead

Ingazat Information Technology

Follow me on twitter: http://www.twitter.com/_busbar

my blog: http://autodiscover.wordpress.com

Link with me on linkedin: http://www.linkedin.com/profile?viewProfile=&key=71027694

or on experts-exchange.com: http://www.experts-exchange.com/M_1426100.html

#23

اخي حازم مشكور على اسم الكتاب وجاري التحميل والاطلاع

تعلم:كيف تشغل برنامجك (قبل) ما يشتغل ال explorer, مثل ال check desk في الوندوز 98 و me

اللهم عطر يومنا بالايمان وانر قلبنا بالقرآن ورزقنا من حيث لانحتسب واجعل لنا سكينة تطمئن بها روحنا واحفظنا من كل سوء اللهم بارك لنا في رجب وشعبان وبلغنا رمضان آمين يارب العالمين

ranneh.com

#24

مساء الخير :::...

شكرا لك اخي حازم :rolleyes:

#25

الأخ الكريم / حازم

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

و حقيقى أنا معجب بطريقة شرحك البسيطة الجميلة

بس فيه مشكله فعلا

زى ما أحد الأعضاء ذكر فعلا أنه الكود ما إشتغلش على ال هارد ديسك من نوع SATA و ده كلام مظبوط

و أنا جربته برضه و إتأكدت إنه ما بيشتغلش لأنى عندى جهازى واحد عادى وواحد SATA .

طب نجرب مثلا سيريال CPUأو ال MB أو ال BIOS لضمان حماية البرامج من النسخ الغير شرعى

و لا مشكلة ال SATA دى لها حل عندك أو عند أى من الأعضاء الكرام.

و على فكرة أنا عمرى ما كنت مهتم بالمتنديات و لا المشاركة فيها بس إنت فعلا فتحت نفسى للمشاركة

و إن شاء الله من النهاردة هتلاقينى عضو فعال بإستمرار معاكو فى منتدى VB.NET - VB6

سبحانك اللهم و بحمدك أشهد أن لا إله إلا أنت أستغفرك و أتوب إليك

لا إله إلا الله وحده لا شريك له له الملك و له الحمد يحى و يميت و هو على كل شيء قدير

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

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