در این مقاله قصد داریم شماره سریال هارد دیسک (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())
info = obj.Properties[
"SerialNumber"
].Value.ToString() +
"\n"
;
catch
{ }
متد 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);
}
}
}
ممنون