PDA

View Full Version : گرفتن آیدی های سخت افزاری



pouria_bayat
یک شنبه 10 خرداد 1394, 00:48 صبح
سلام دوستان من خیلی وقته روی یک برنامه وقت گذاشتم، خدارو شکر الان دیگه انتهای برنامه هستم، قبلا برای نرم افزارهای دیگه ای که نوشتم(به درخواست مشتری) از هاردور آیدی سخت افزاری برای تولید کلید یکتا استفاده میکردم که توی یکی دو مورد به مشگل بر خوردم و اینکه هاردور ایدی بعضی مواقع تغییر میکرد(بدون تعویض سخت افزار) کمکی که از شما دوستان دارم اینه که سورسی سراغ دارید برای گرفتن اطلاعات هاردور آیدی هارد، سی پی یو و مادربرد رو طوری که اون سورس مطمئن باشه و ازش استفاده کردید رو در اختیارم بزارید، خدا اجرتون بده ممنونم.

mthreat.info
یک شنبه 10 خرداد 1394, 02:28 صبح
سلام اگه ویندوز طرف ویستا به بالا باشه میشه از WMI استفاده کرد

Javad_raouf
یک شنبه 10 خرداد 1394, 09:05 صبح
سلام
توی رفرنس ها System.Management و System.Management.Instrumentation رو Add کن
برای سریال مادربرد:
public static string GetMainID()
{
System.Management.ManagementObjectSearcher wmi = new System.Management.ManagementObjectSearcher("select * from Win32_BaseBoard");
string serial_numbers = "";
System.Management.ManagementObjectCollection wmiGet;
try
{
wmiGet = wmi.Get();
}
catch (Exception)
{
return "";
}
foreach (System.Management.ManagementObject service in wmiGet)
{
try
{
serial_numbers += ", " + service["SerialNumber"].ToMyString();
}
catch (Exception)
{


}
}
if (serial_numbers.Length > 0) serial_numbers = serial_numbers.SubstringTry(2);
return serial_numbers;
}
سریال CPU:
public static string GetCpuId()
{
System.Management.ManagementObjectSearcher wmi = new System.Management.ManagementObjectSearcher("select * from Win32_Processor");
string serial_numbers = "";
System.Management.ManagementObjectCollection wmiGet;
try
{
wmiGet = wmi.Get();
}
catch (Exception)
{
return "";
}
foreach (System.Management.ManagementObject service in wmiGet)
try
{
serial_numbers += ", " + service["ProcessorId"].ToMyString();
}
catch (Exception)
{


}
if (serial_numbers.Length > 0) serial_numbers = serial_numbers.SubstringTry(2);


return serial_numbers;
}
سریال هارد:
public static string GetHDSerial()
{


System.Management.ManagementObjectSearcher wmi = new System.Management.ManagementObjectSearcher("select * from Win32_DiskDrive");
string serial_numbers = "";
System.Management.ManagementObjectCollection wmiGet;
try
{
wmiGet = wmi.Get();
}
catch (Exception)
{
return "";
}
foreach (System.Management.ManagementObject service in wmiGet)
{
try
{
serial_numbers += ", " + service["SerialNumber"].ToMyString().Trim();
}
catch (Exception)
{


try
{
serial_numbers += ", " + service["PNPDeviceID"].ToMyString().Trim();
}
catch (Exception)
{

}
}
}
if (serial_numbers.Length > 0) serial_numbers = serial_numbers.Substring(2);


return serial_numbers;
}

سریال هارد همونطور که خودت متوجه شدی برخی اوقات عوض میشه مثلا وقتی هارد اکسترنال وصل کنی
یا حتی برخی اوقات بدون اینکه هارد اکسترنال وصل کنی:متعجب:

سریال مادربرد هم وقتی باطری مادربرد رو برداری کلا ریست میشه و مثلا یا 1111111111111 میشه یا 000000000000 و....:افسرده:

تنها سریالی که من تا حالا ندیدم عوض بشه سریال CPU هست:لبخندساده:

pouria_bayat
یک شنبه 10 خرداد 1394, 10:02 صبح
ممنون جواد جان اما به نظرت راهی هست که بشه روی سریال هارد تکیه کرد یا قطعات دیگه که مطمئن باشی روی سیستم سوار هستش.....

silsin
یک شنبه 10 خرداد 1394, 10:38 صبح
فکر کنم این مثال به درد بخوره :
http://www.codeproject.com/Articles/6077/How-to-Retrieve-the-REAL-Hard-Drive-Serial-Number
البته خودم من از سریال cpu استفاده می کنم !

Javad_raouf
یک شنبه 10 خرداد 1394, 12:45 عصر
ممنون جواد جان اما به نظرت راهی هست که بشه روی سریال هارد تکیه کرد یا قطعات دیگه که مطمئن باشی روی سیستم سوار هستش.....
مگه CPU چشه؟
من تجربیاتم همینقدر بود داداش
شاید راهی باشه ولی من بلد نیستم:لبخندساده:

pouria_bayat
یک شنبه 10 خرداد 1394, 13:52 عصر
برای زمانی که یکی از قطعه ها از کار بیافته و فرضا شما ایدی چند تا سخت افزار رو داشته باشید براساس بقیه می تونید اعتماد کنید و کلید جدید بدید منباب این موضوع میگم....

asman.abi
دوشنبه 11 خرداد 1394, 01:03 صبح
به نظرم cpuid خوبه . منم از اون استفاده می کنم.

اگه از بقیه سخت افزار ها به صورت ترکیبی و مخلوط شده یه id بسازیم خوبه ولی طرف با یه ارتقا سخت افزاری مثلا کمبود فضای هارد دیسک،هارد عوض کنه دیگه id نامعتبر میشه.

ترکیب id های سخت افزاری(مثلا AND منطقی) اگه مشکلی مثل بالا نیست خوبه.