گروه کامپیوتر دانشگاه آزاد

اساتید و دانشجویان دانشگاه آزاد اسلامی

گروه کامپیوتر دانشگاه آزاد

اساتید و دانشجویان دانشگاه آزاد اسلامی

بِسْمِ اللَّهِ الرَّحْمَٰنِ الرَّحِیمِ
زکات علم، نشر آن است. گروه کامپیوتر دانشگاه آزاد با هدف خدمت به دانش آموزان ، دانشجویان و آنهایی که علاقه به برنامه نویسی و طراحی و کلیه امور تخصصی کامپیوتر دارند با هدف نشر علم خدمت رسانی کند امید است کاربران در جهت تحقق این اهداف والا یار و همدم ما باشند . . .

آخرین نظرات

 در این مقاله قصد داریم شماره سریال هارد دیسک (Hard Disk) و شماره سریال سی پی یو (CPU) را بدست آوریم.

شماره سریال این قطعات سخت افزاری میتواند در خیلی جاها مفید باشد ، به عنوان مثال میتوانید از آن برای تولید شماره سریال یا رمز فعال سازی منحصر به فرد برای نرم افزارهای خود استفاده کنید.
مانند همیشه یک پروژه سی شارپ جدید بسازید.
در پنجره ی Solution Explorer روی References راست کلیک کرده و Add Reference را انتخاب کنید.
حالا سربرگ .Net را انتخاب نمایید و در لیست به دنبال System.Management بگردید و پس از پیدا کردن آن OK را کلیک کنید تا به مجموعه رفرنس های پروژه اضافه شود.
روی فرم دابل کلیک کرده تا وارد بخش کد نویسی شوید.
قصد داریم تنها از دو کلاس ManagementObject و ManagementObjectSearcher استفاده کنیم که در ریفرنسی که اضافه کردیم وجود دارند ، پس برای سهولت کد نویسی ابتدا این ریفرنس را در بالا معرفی میکنیم تا به کلاسهای آن دسترسی داشته باشیم :

using System.Management;

 اوکی ، حالا به رویداد Load فرم بروید و یک شئ از کلاس ManagementObjectSearcher بسازید :

ManagementObjectSearcher searcher = new ManagementObjectSearcher("select * from Win32_DiskDrive");

بقیه در ادامه مطالب

همانطور که دیدید در خط بالا برای ساخت شئ searcher یک پارامتر string به متد سازنده کلاس آن فرستاده ایم که خیلی شبیه دستور اس کیو ال هست. تنها نکته قابل توجه Win32_DiskDrive است که یک کالکشن مربوط به حافظه های جانبی متصل به کامپیوتر بر میگرداند ، به عنوان مثال هارد دیسک ها ، فلش ها و …
برای بدست آوردن مشخصات سی پی یو از Win32_Processor استفاده میکنیم.
حالا یک متغیر از نوع string تعریف میکنیم تا سریال هارد دیسک یا سی پی یو را در آن ذخیره کنیم و پس از آن یک حلقه ی foreach معرفی میکنیم که همه ی ManagementObject هایی که شئ seacher برای ما برمیگرداند را بپیماییم و شماره سریال های آنها را بدست بیاوریم.
سپس آنرا با کادر پیام نمایش میدهیم.

string info = "";
foreach (ManagementObject obj in searcher.Get())
{
try{
 info = obj.Properties["SerialNumber"].Value.ToString() + "\n";
      }
catch { }
}
MessageBox.Show(info);

متد Get مربوط به شئ searcher یک کالکشن بر میگرداند که با حلقه آنها را یکی یکی پیموده ایم و پراپرتی SerialNumber آنها را بدست آورده ایم که برای برخی از اعضای این کالکشن ممکن است null باشد ، برای جلوگیری از رخ دادن خطا از try…catch استفاده کرده ایم.
هنگامی که میخواهید شماره سریال سی پی یو را بدست آورید از پراپرتی ProcessorId استفاده کنید که در این حالت کد مربوطه به این شکل خواهد بود :

info = obj.Properties["ProcessorId"].Value.ToString() + "\n";

روشی که در این مقاله آموزش داده شده امکان دارد روی برخی سخت افزارها جواب ندهد بنابراین قبل از استفاده از این کد ابتدا آنرا روی چند کامپیوتر تست کنید.
روش های زیادی برای بدست آوردن این مشخصات وجود دارد که مطمئنا این روش بهترین نیست!

کد کامل بدست آوردن شماره سریال هارد دیسک :

using System;
using System.Windows.Forms;
using System.Management;

namespace trainingCSharp
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
ManagementObjectSearcher searcher = new ManagementObjectSearcher("select * from Win32_DiskDrive");
string info = "";
foreach (ManagementObject obj in searcher.Get())
{
try
{
info = obj.Properties["SerialNumber"].Value.ToString() + "\n";
}
catch { }
}
MessageBox.Show(info);
}

}
}

کد کامل بدست آوردن شماره سریال سی پی یو :

using System;
using System.Windows.Forms;
using System.Management;

namespace trainingCSharp
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
ManagementObjectSearcher searcher = new ManagementObjectSearcher("select * from Win32_Processor");
string info = "";
foreach (ManagementObject obj in searcher.Get())
{
try
{
info = obj.Properties["ProcessorId"].Value.ToString() + "\n";
}
catch { }
}
MessageBox.Show(info);
}

}
}

نظرات (۳)

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

تا به حال بهترین پستی که تونستم ازش استفاده ببرم همینه

واقعا ممنونم ...
پاسخ:
با سلام و تشکر وظیفه ما زکات علممونو خوشحالیم که مورد استفاده شما قرار گرفته شد
واقعا از صمیم قلب ازتون تشکر میکنم اولین پست و مطلب درست و حسابی که خوندم همینه
پاسخ:
با سلام خدمت شما کاربر عزیز ممنون مرسی نظر لطفتونه قربان موفق و موید باشید امینی
ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
تجدید کد امنیتی