DCSIMG
June 2008 - Posts - שחר.נט

שחר.נט

בלוגים שאני קורא

ספרים מומלצים

June 2008 - Posts

תשובה לשאלה בפורום: תשאול WMI מתוך .NET

בפורום תכנות .net בתפוז, התפרסמה השאלה הבאה:

שלום!
אני עובד עם VB.NET
אני מנסה לחשוב על דרך שבה תוכנה שתותקן על מחשב תוכל לשרת את אותו מחשב.
עלה לי רעיון שאם יש איזה מידע שיחודי לאותו מחשב, ישמר בזיכרון התוכנה והיא תפעל רק אם היא מזהה את המידע הזה.
לפי דעתי האופציה הכי טובה זה מידע על החומרה. האם זאת אופציה ברת יישום? האם המידע הזה (לדוגמה סוג המעבד/לוח אם וכ') נגיש לזיהוי על ידי התוכנה?
תודה מראש

כפי שניתן להבין, השואל מחפש מידע שייחודי למחשב. המידע הייחודי למחשב, בד"כ יהיה המספר הסריאלי של לוח האם והמספר הסריאלי של המעבד.
כדי לגשת לנתונים אלה, צריך להשתמש ב WMI. למי שלא מכיר, WMI זה איזושהי מעטפת של Windows, שמאפשרת לעבוד מול נתונים הקשורים למחשב ולנהל אותם בשפה מבוססת שאילתות.

בשביל לעבוד עם WMI מדוט.נט, אנחנו משתמשים ב namespace שנקרא System.Management, כלומר, כדאי להוסיף רפרנס בשלב זה לפרוייקט שלכם. כאשר המטרה שלנו היא לשלוף מידע, נשתמש ב ManagementObjectSearcher, כאשר נעביר ל constructor שלו את השאילתה שלנו. במקרה הזה, הסריאל של המעבד מאוכסן ב Win32_Processor ב property שנקרא ProcessorId. זכרו, שייתכן שיש יותר ממעבד אחד. יצירת המופע תיראה כך:

ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_Processor");

השלב הנוכחי שלנו, הוא לעבור בלולאה על התוצאות שמוחזרות באמצעות המתודה Get ולאכסן את המידע איפשהו:

foreach (var item in searcher.Get()) { Console.WriteLine(item["ProcessorId"].ToString()); }

  מצטער על החוסר בהירות בקריאה (התוסף של הקוד משום מה לא ממש עובד לי).

למעשה, זאת הדרך לשלוף מידע באמצעות WMI. אם מעוניינים בסריאל של לוח האם, אז פה מדובר ב property ששמו SerialNumber שנמצא ב Win32_BaseBoard. בד"כ אלה החלקים הייחודיים שכדאי להשתמש בהם כדי לזהות מחשב, מכיוון שכאשר מחליפים חלקים אלו בד"כ מדובר במחשב חדש (או, לפחות, ברוב המקרים נוכל לצאת מנקודת הנחה שזה מחשב חדש ולדרוש מהמשתמש לאקטב מחדש את האפליקציה).

מה עושים עם המידע? הדרך הכי חכמה זה לשלוח אותו לשרת ולאכסן אותו שם, כאשר בכל הפעלה של אפליקציה לבדוק את זהות הנתונים כדי לראות האם יש למחשב אישור להשתמש במידע.

בהצלחה.