ورود و ثبت نام

آموزش بیرون کشیدن اطلاعات سیستم عامل و سخت افزار با سی شارپ

خواندن این مطلب

7 دقیقه

زمان میبرد!

آموزش بیرون کشیدن اطلاعات سیستم عامل و سخت افزار با سی شارپ

سلام دوستان خسته نباشید، امیدوارم حالتون خوب باشه… امروز قراره که با کلاس ManagementObjectSearcher توی زبان C# آشنا بشید. با استفاده از این کلاس شما میتونید اطلاعات خوبی رو از سیستم قربانی فقط با یک query به دست بیارید.

اطلاعاتی که ما میخوایم امروز به دست بیاریم شامل موارد زیر هستن :

هر چند که میشه بعضی از اطلاعات رو با استفاده از کلاس هایی که دات نت به ما ارائه داده به دست آورد، ولی بد نیست که یک بار این روش هم امتحان کنید.

 

 

فضای نام System.Management

قبل از هر چیزی باید بدونید که کلاس ManagementObjectSearcher در فضای نام System.Management قرار داره و شما باید مطمئن بشید این کتابخونه جز رفرنس های برنامه شماست. برای اینکار بعد از ایجاد یک پروژه C# Console app، پنجره solution explorer رو باز کنید(اگر قابل مشاهده نیست از منوی View استفاده کنید)، بعد روی پروژه C# خودتون کلیک راست کنید تا منویی مثل شکل زیر ظاهر بشه:

 

سپس روی گزینه Add و بعد روی Reference کلیک کنید تا پنجره زیر باز بشه :

 

پنجره رفرنس ها

 

بعد توی قسمت جستجو(گوشه بالا سمت راست) “Management” رو جستجو کنید تا نتایج زیر رو ببنید :

 

نتایج جستجو

 

بعد گزینه System.Management رو تیک بزنید و دکمه OK و تمام!

قالب کد نویسی ما

تابع showInfo

 

ما یک تابع به اسم 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 رو بر میگردونه(تا اونجا که من تست کردم البته…)

خب دوستان اینم از این… امیدوارم این مطلب براتون مفیده بوده باشه. اگه دوست داشتید برای اطلاعات بیشتر یک سر به اینجا هم بزنید.

درباره نویسنده



نظرات کاربران



دیدگاهتان را بنویسید

مطالب مرتبط