PDA

View Full Version : مبتدی: مشکل در دریافت سریال هارد دیسک



Collector
جمعه 11 اسفند 1391, 12:30 عصر
سلام
من با این کد میخوام سریال هارد دیسک را بدست بیارم تابع مقدار تهی بر میگرداند.
نکته 1: سریال های بقیه سخت افزار ها هم به همین ترتیب است.
نکته 2: در بقیه سیستم ها میشکلی ندارد.

public static string Hard()
{
string serial = string.Empty;

try
{
var searcher2 = new ManagementObjectSearcher("root\\CIMV2",
"Select * from win32_logicaldisk");

foreach (ManagementObject queryObj2 in searcher2.Get())
serial = queryObj2["VolumeSerialNumber"].ToString();
}
catch(Exception ex)
{
BLL.Log.Log_Eroor_To_File(ex.Message, ex.StackTrace);
}
return serial;
}


Generic failure $ at System.Management.ThreadDispatch.Start()
at System.Management.ManagementScope.Initialize()
at System.Management.ManagementObjectSearcher.Initial ize()
at System.Management.ManagementObjectSearcher.Get()

danialafshari
جمعه 11 اسفند 1391, 12:40 عصر
using System.Management;
private static string GetHDDSerialNumber()
{
ManagementObjectSearcher searcher;
string query1 = "SELECT * FROM Win32_DiskDrive";
string query2 = "SELECT * FROM Win32_PhysicalMedia";
searcher = new ManagementObjectSearcher(query1);
foreach (ManagementObject wmi_HD in searcher.Get())
if (wmi_HD["Model"] != null)
MessageBox.Show(wmi_HD["Model"].ToString());
searcher = new ManagementObjectSearcher(query2);
foreach (ManagementObject wmi_HD in searcher.Get())
if (wmi_HD["SerialNumber"] != null)
MessageBox.Show(wmi_HD["SerialNumber"].ToString());
return query2;
}

private void button1_Click(object sender, EventArgs e)
{
MessageBox.Show(GetHDDSerialNumber().ToString());
}

Collector
جمعه 11 اسفند 1391, 13:23 عصر
using System.Management;
private static string GetHDDSerialNumber()
{
ManagementObjectSearcher searcher;
string query1 = "SELECT * FROM Win32_DiskDrive";
string query2 = "SELECT * FROM Win32_PhysicalMedia";
searcher = new ManagementObjectSearcher(query1);
foreach (ManagementObject wmi_HD in searcher.Get())
if (wmi_HD["Model"] != null)
MessageBox.Show(wmi_HD["Model"].ToString());
searcher = new ManagementObjectSearcher(query2);
foreach (ManagementObject wmi_HD in searcher.Get())
if (wmi_HD["SerialNumber"] != null)
MessageBox.Show(wmi_HD["SerialNumber"].ToString());
return query2;
}

private void button1_Click(object sender, EventArgs e)
{
MessageBox.Show(GetHDDSerialNumber().ToString());
}

با این کد هم فرقی نکرد باز هم خروجی خالی بود :متفکر:

danialafshari
جمعه 11 اسفند 1391, 14:57 عصر
کد تست شده است !

Collector
جمعه 11 اسفند 1391, 15:06 عصر
کد تست شده است !
میدونم ولی توی سیستم من چرا جواب نمیده
توی سیستم های دیگه جواب میده(همین الان تست کردم)

danialafshari
جمعه 11 اسفند 1391, 15:33 عصر
میدونم ولی توی سیستم من چرا جواب نمیده
توی سیستم های دیگه جواب میده(همین الان تست کردم)

آهان !
ببین این کد از wmi ویندوز استفاده می کنه که اگر از کار بیفته دیگه خروجی نمیده
این مسیر رو برو
کلیک راست روی My Computer > Manage >Services و Windows Management Instrumentation پیداش کن و Enable کنش
و
مطمئن شوید که در Msconfig در قسمت Services تیک این گزینه زده باشه
متاسفانه بعضی سایت ها توصیه کردن که این سرویس بیهوده رو ببندین بدون اینکه بدونن کارش چیه !
موفق باشی

Collector
جمعه 11 اسفند 1391, 17:05 عصر
آهان !
ببین این کد از wmi ویندوز استفاده می کنه که اگر از کار بیفته دیگه خروجی نمیده
این مسیر رو برو
کلیک راست روی My Computer > Manage >Services و Windows Management Instrumentation پیداش کن و Enable کنش
و
مطمئن شوید که در Msconfig در قسمت Services تیک این گزینه زده باشه
متاسفانه بعضی سایت ها توصیه کردن که این سرویس بیهوده رو ببندین بدون اینکه بدونن کارش چیه !
موفق باشی

این مورد فعاله حتی با یک سیستم عامل دیگه که روی سیستم دارم هم تست کردم همین طوریه
میشه اصلا از WMI استفاده نکرد را دیگه ای هم هست؟

FastCode
جمعه 11 اسفند 1391, 17:36 عصر
هاردتون SMART داره ؟

Collector
جمعه 11 اسفند 1391, 20:25 عصر
هاردتون SMART داره ؟
بله Smart داره
از توابع API استفاده کردم مشکل حل شد. ولی هنوز نمیدونم چرا با WMI جواب نداد