Làm thế nào để tôi nhận được ổ cứng số serial mà không sử dụng dll và được hỗ trợ bởi VISTALàm cách nào để sử dụng C# để nhận số sêri đĩa cứng?
8
A
Trả lời
2
Hãy thử mã này từ here và cho chúng tôi biết nếu nó hoạt động:
// Namespace Reference
using System.Management;
/// <summary>
/// method to retrieve the selected HDD's serial number
/// </summary>
/// <param name="strDriveLetter">Drive letter to retrieve serial number for</param>
/// <returns>the HDD's serial number</returns>
public string GetHDDSerialNumber(string drive)
{
//check to see if the user provided a drive letter
//if not default it to "C"
if (drive == "" || drive == null)
{
drive = "C";
}
//create our ManagementObject, passing it the drive letter to the
//DevideID using WQL
ManagementObject disk = new ManagementObject("win32_logicaldisk.deviceid=\"" + drive +":\"");
//bind our management object
disk.Get();
//return the serial number
return disk["VolumeSerialNumber"].ToString();
}
EDIT: Và nếu điều đó không công việc, hãy thử mã này từ CodeProject:
Trước tiên, hãy tạo ra một lớp để lưu trữ thông tin về một ổ cứng:
class HardDrive
{
private string model = null;
private string type = null;
private string serialNo = null;
public string Model
{
get {return model;}
set {model = value;}
}
public string Type
{
get {return type;}
set {type = value;}
}
public string SerialNo
{
get {return serialNo;}
set {serialNo = value;}
}
}
Tiếp theo, chúng ta truy vấn lớp Win32_DiskDrive:
ManagementObjectSearcher searcher = new
ManagementObjectSearcher("SELECT * FROM Win32_DiskDrive");
foreach(ManagementObject wmi_HD in searcher.Get())
{
HardDrive hd = new HardDrive();
hd.Model = wmi_HD["Model"].ToString();
hd.Type = wmi_HD["InterfaceType"].ToString();
hdCollection.Add(hd);
}
Bây giờ chúng ta cần phải trích xuất các số serial từ lớp Win32_PhysicalMedia :
searcher = new
ManagementObjectSearcher("SELECT * FROM Win32_PhysicalMedia");
int i = 0;
foreach(ManagementObject wmi_HD in searcher.Get())
{
// get the hard drive from collection
// using index
HardDrive hd = (HardDrive)hdCollection[i];
// get the hardware serial no.
if (wmi_HD["SerialNumber"] == null)
hd.SerialNo = "None";
else
hd.SerialNo = wmi_HD["SerialNumber"].ToString();
++i;
}
.210Bây giờ chúng tôi hiển thị thông tin ổ cứng của chúng tôi:
// Display available hard drives
foreach(HardDrive hd in hdCollection)
{
Console.WriteLine("Model\t\t: " + hd.Model);
Console.WriteLine("Type\t\t: " + hd.Type);
Console.WriteLine("Serial No.\t: " + hd.SerialNo);
Console.WriteLine();
}
14
using System.Management;
public string GetHDDSerial()
{
ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_PhysicalMedia");
foreach (ManagementObject wmi_HD in searcher.Get())
{
// get the hardware serial no.
if (wmi_HD["SerialNumber"] != null)
return wmi_HD["SerialNumber"].ToString();
}
return string.Empty;
}
0
Hi chỉ tìm thấy liên kết này
Nó làm việc cho tôi:
Herre là phần thiết yếu của mã:
/// <summary>
/// return Volume Serial Number from hard drive
/// </summary>
/// <param name="strDriveLetter">[optional] Drive letter</param>
/// <returns>[string] VolumeSerialNumber</returns>
public string GetVolumeSerial(string strDriveLetter)
{
if(strDriveLetter=="" || strDriveLetter==null)
strDriveLetter="C";
ManagementObject disk = new ManagementObject("win32_logicaldisk.deviceid=\"" + strDriveLetter +":\"");
disk.Get();
return disk["VolumeSerialNumber"].ToString();
}
4
đây là mã mà làm việc cho tôi:
ManagementObjectSearcher searcher = null;
searcher = new ManagementObjectSearcher("SELECT * FROM Win32_DiskDrive");
foreach (ManagementObject wmi_HD in searcher.Get())
{
HardDrive hd = new HardDrive();
try
{
txtmdl.Text = hd.Caption = wmi_HD["Caption"].ToString();
txtsn.Text=(hd.SerialNo = wmi_HD.GetPropertyValue("SerialNumber").ToString());
tôi chỉ cần thêm 2 textbox để có được kết quả ,, bạn có thể làm như vậy!
và lớp cứng ổ đĩa:
public class HardDrive
{
public string Model { get; set; }
public string InterfaceType { get; set; }
public string Caption { get; set; }
public string SerialNo { get; set; }
}
Đừng quên sử dụng:
using System.Management;
Các vấn đề liên quan
- 1. Làm cách nào để nhận được số ổ đĩa cứng của ổ USB trên OS X?
- 2. Làm cách nào để lấy số sêri điện thoại (IMEI)
- 3. Làm thế nào để lấy số sê-ri từ đĩa cứng?
- 4. Cách tạo số sêri trong truy vấn?
- 5. Làm cách nào để lưu tệp vào đĩa cứng trong một chuỗi riêng biệt?
- 6. Làm thế nào để có được số bo mạch chủ hoặc số sêri trong Delphi?
- 7. Làm cách nào để nhận được ID phần cứng nhanh chóng trong C#?
- 8. Đọc các Ổ đĩa cứng trong C++ trên Linux
- 9. Ghi tệp vào đĩa CD bằng cách sử dụng C#
- 10. Làm thế nào để biết đĩa Windows được sử dụng để khởi động
- 11. Xóa dung lượng trống trên ổ đĩa cứng bằng C#
- 12. Bằng mã, làm thế nào tôi có thể gửi một ổ đĩa cứng để ngủ
- 13. Làm cách nào để hủy kích hoạt ổ đĩa vật lý LVM2 để tháo ổ đĩa?
- 14. Làm cách nào để phát hiện xem có ổ đĩa cụ thể nào là ổ cứng không?
- 15. Làm cách nào để viết một ứng dụng sử dụng phần cứng Intel IPT?
- 16. Lấy Số sê-ri của Ổ đĩa cứng Được cung cấp bởi nhà sản xuất thông qua PHP
- 17. Làm thế nào để ngăn chặn chương trình Windows khỏi ổ đĩa cứng quay xuống?
- 18. Làm thế nào để bạn phát hiện các ký tự ổ đĩa cứng chính như ổ C:?
- 19. Làm cách nào để sử dụng giải mã video tăng tốc phần cứng trên Android?
- 20. Làm thế nào để gọi một danh sách các đĩa cứng gắn liền với vật lý bằng cách sử dụng Free Pascal, hoặc, thất bại đó, Delphi?
- 21. Lệnh để lấy thông số đĩa cứng và bộ xử lý từ xa
- 22. Sử dụng named_scope để nhận số hàng
- 23. Làm cách nào để nhận số lượng hàng bằng cách sử dụng api QueryOver NHibernate?
- 24. Làm cách nào để sử dụng TransactionScope trong C#?
- 25. Cách tải hình ảnh từ mshtml.htmlimg vào đĩa cứng
- 26. Tăng ổ cắm asio: cách nhanh nhất để đọc tệp từ ổ đĩa cứng?
- 27. Chống phân mảnh đĩa cứng ảo (.vhd)?
- 28. Làm cách nào để nhận sự kiện ctrl-c? (C++)
- 29. Làm thế nào để phát hiện bằng cách sử dụng C# nếu một ổ đĩa được cắm vào cổng USB?
- 30. Làm cách nào để sử dụng hàm round() trong C?
Vâng, tôi đồng ý ... WMI. –
ý tưởng hay đối với tôi –