درگاه پرداخت سایت فعلا دردسترس نیست اگر قصد تهیه دوره ای رو دارید تلگرام پیام بدید
|
سلام دوستان خسته نباشید، امیدوارم حالتون خوب باشه… امروز قراره که با کلاس ManagementObjectSearcher توی زبان C# آشنا بشید. با استفاده از این کلاس شما میتونید اطلاعات خوبی رو از سیستم قربانی فقط با یک query به دست بیارید.
اطلاعاتی که ما میخوایم امروز به دست بیاریم شامل موارد زیر هستن :
هر چند که میشه بعضی از اطلاعات رو با استفاده از کلاس هایی که دات نت به ما ارائه داده به دست آورد، ولی بد نیست که یک بار این روش هم امتحان کنید.
قبل از هر چیزی باید بدونید که کلاس ManagementObjectSearcher در فضای نام System.Management قرار داره و شما باید مطمئن بشید این کتابخونه جز رفرنس های برنامه شماست. برای اینکار بعد از ایجاد یک پروژه C# Console app، پنجره solution explorer رو باز کنید(اگر قابل مشاهده نیست از منوی View استفاده کنید)، بعد روی پروژه C# خودتون کلیک راست کنید تا منویی مثل شکل زیر ظاهر بشه:
سپس روی گزینه Add و بعد روی Reference کلیک کنید تا پنجره زیر باز بشه :
بعد توی قسمت جستجو(گوشه بالا سمت راست) “Management” رو جستجو کنید تا نتایج زیر رو ببنید :
بعد گزینه System.Management رو تیک بزنید و دکمه OK و تمام!
ما یک تابع به اسم showInfo تعریف کردیم که یک ورودی string داره. این ورودی در واقع یک بخش از query ماست؛ بعد یک متغییر تعریف کردیم به اسم s که از نوع ManagementObjectSearcher هستش. این کلاس چند تا سازنده داره، ما از سازنده ای استفاده میکنیم که فقط یک پرس و جو قبول میکنه و با بقیه کاری نداریم. بعد اومدیم یک متغییر کلی تعریف کردیم به اسم Info که خودشو با نوع برگشتی تابع s.Get وفق بده(ManagementObjectCollection). بعد اومدیم یک شمارنده تعریف کردیم از نوع int به اسم number. دقت کنید که تابع Get ممکنه کارش یکم طول بکشه.
بعد از یک حلقه foreach استفاده کردیم تا توی نتایج به دست اومده پیمایش کنیم. بدنه حلقه froeach ما اولین کاری که میکنه اینه که به شمارنده یکی اضافه میکنه و اونو نمایش میده.
هر ManagementObject چند تا خاصیت خاص داره… ما نمیتونیم مثل آرایه های معمولی به اعضای به دست اومده با استفاده از اندیس دسترسی داشته باشیم؛ ما باید خواص رو داشته باشیم تا بتونیم به اطلاعات دسترسی داشته باشیم. حالا این خاصیت ها رو از کجا به دست بیاریم؟ خیلی راحت با استفاده از خاصیت Properties در ManagementObject! از اونجایی که این خاصیت از نوع PropertyDataCollection است و این کلاس واسط IEnumerable رو پیاده سازی کرده، پس این خاصیت با استفاده از حلقه foreach قابل پیمایشه!
خب ما توی حلقه درونی(حلقه foreach بعدی) اومدیم از یک دستور try استفاده کردیم؛ چرا؟ برای اینکه گاهی اوقات بعضی از خاصیت ها ممکنه مقدار null برگردونن یا خلاصه ممکنه یک مشکلی پیش بیاد و باعث توقف برنامه بشه. ما کدی برای ادراه استثنای احتمالی ننوشتیم و فقط میگیم اگه خطایی رخ داد ازش عبور کن.
توی قسمت try اومدیم و از Indexer های کلاس PropertyData استفاده کردیم. این Indexer ها ورودیشون یک رشته است نه یک عدد! یک چیزی تو مایه کلاس <Dictionary<string, object 🙂
در نهایت خاصیت ها و مقدارشون رو توی پنجره خروجی نمایش دادیم… خب، بریم سراغ رشته هایی که میتونن ورودی تابع showInfo باشن…
Win32_Fan : اطلاعاتی راجع به فن سیستم ارائه میده؛ برای مثال خروجی برنامه من همچین اطلاعاتی داشت :
Win32_Keyboard : اطلاعاتی راجع به صفحه کلید فعلی سیستم به ما میده برای مثال(کامل نیست) :
Win32_PointingDevice : اطلاعاتی راجع به دستگاه های ورودی به ما میده که به وسیله اون ها میشه نشانه گر ماوس رو جا به جا کرد :
Win32_CDROMDrive : درایو CD-ROM رو نمایش میده :
Win32_DiskDrive : نشاندهنده دیسک های فیزیکی است :
Win32_PhysicalMedia : تمام وسیله های ذخیره سازی رو به ما نمایش میده :
Win32_BIOS : اطلاعاتی راجع به بایوس به ما میده :
Win32_PhysicalMemory : اطلاعاتی راجع به مموری سیستم به ما میده :
Win32_SoundDevice : اطلاعاتی مربوط به دیوایس های مربوط به صدا به ما میده :
خب فکر کنم تا همین جا کافی باشه، بریم سراغ اطلاعات مربوط به سیستم عامل…
Win32_UserAccount : اطلاعاتی راجع به کاربر های سیستم فعلی میده :
Win32_Account : لیست تمام اکانت هایی هست که توی ویندوزه(به جز اکانت های معمولی)
Win32_Registry : اطلاعاتی راجع به ریجستری ویندوز به ما میده
Win32_Process : اطلاعاتی راجع به پروسه های باز سیستم به ما میده
Win32_Thread : اطلاعاتی راجع به ترد های اجرایی سیستم به ما میده
Win32_BootConfiguration : نشانگر تنظیمات بوت سیستم است(معمولا پوشه WINDOWS رو به ما میده)
Win32_ComputerSystem : اطلاعاتی راجع به سیستمی به ما میده که ویندوز روش نصبه
Win32_OperatingSystem : اطلاعاتی راجع به سیستم عامل فعلی به ما میده
Win32_StartupCommand : برنامه هایی رو نشون میده که هنگام استارت ویندوز اجرا میشن و یک سری دستور میگیرن
Win32_SystemServices : سرویس های سیستم رو نشون میده
Win32_Directory : لیست تمام پوشه های درایو C رو بر میگردونه(تا اونجا که من تست کردم البته…)
خب دوستان اینم از این… امیدوارم این مطلب براتون مفیده بوده باشه. اگه دوست داشتید برای اطلاعات بیشتر یک سر به اینجا هم بزنید.