请问如何用C#取得当前硬盘的序列号?
解决方案 »
- 表达式的解析问题
- string.Empty 与 "" 的区别
- 关于机器码生成试验与问题
- dataGridView对齐方式动态设置??
- 准备做个药店管理系统,请有经验的哥们指教?请提供案例或资料参考!不胜感激!!!
- 关于文件大小的取得
- 新手请大家帮助c#不能跳进treeview1_AfterSelect(){}中
- 一个菜鸟问题,高手来了别打击我!
- 无法将类型“接口继承.Program”隐式转换为“接口继承.IprogramDic”。存在一个显式转换(是否缺少强制转换?)
- C#入门经典第十一章 求素数的算法
- String.GetHashCode 是怎样能够保证唯一的呢?
- C#一个很基础的问题,各位不要嫌简单啊.
using System.Management;public class Test
{
static void Main()
{
Console.WriteLine("My HardDisk is :");
GetHd();
} public static void GetHd()
{
ManagementObjectSearcher wmiSearcher = new ManagementObjectSearcher();
wmiSearcher.Query = new SelectQuery("Win32_DiskDrive", "", new string[]{"PNPDeviceID"});
ManagementObjectCollection myCollection = wmiSearcher.Get();
ManagementObjectCollection.ManagementObjectEnumerator em = myCollection.GetEnumerator();
while(em.MoveNext())
{
ManagementBaseObject mo = em.Current;
Console.WriteLine(mo.Properties["PNPDeviceID"].Value.ToString().Trim());
}
}
}/* 程序输出: (我有2块硬盘)
My HardDisk is :
IDE\DISKIBM-DTLA-307030_________________________TX4OA60A\5&230D196C&0&0.0.0
IDE\DISKQUANTUM_FIREBALL_CR6.4A_________________A5U.1200\3231393633313639353730312020202020202020
*/
private static extern int GetVolumeInformation( string lpRootPathName,
string lpVolumeNameBuffer,
int nVolumeNameSize,
ref int lpVolumeSerialNumber,
int lpMaximumComponentLength,
int lpFileSystemFlags,
string lpFileSystemNameBuffer,
int nFileSystemNameSize
); /// <summary>
/// 获得盘符为drvID的硬盘序列号,缺省为C
/// </summary>
/// <param name="drvID"></param>
/// <returns></returns>
public string HDVal(string drvID)
{
const int MAX_FILENAME_LEN = 256;
int retVal = 0;
int a =0;
int b =0;
string str1 = null;
string str2 = null;
int i = GetVolumeInformation(
drvID + @":\",
str1,
MAX_FILENAME_LEN,
ref retVal,
a,
b,
str2,
MAX_FILENAME_LEN
);
return retVal.ToString();
} public string HDVal()
{
const int MAX_FILENAME_LEN = 256;
int retVal = 0;
int a =0;
int b =0;
string str1 = null;
string str2 = null;
int i = GetVolumeInformation(
"c:\\",
str1,
MAX_FILENAME_LEN,
ref retVal,
a,
b,
str2,
MAX_FILENAME_LEN
);
return retVal.ToString();
}
我自己有用C++写了个DLL,可以读出硬盘物理序列号,不知道楼主是不是要这样的??
我自己有用C++写了个DLL,可以读出硬盘物理序列号,不知道楼主是不是要这样的??
-------------------------------------------------------------
/* 程序输出: (我有2块硬盘)
My HardDisk is :
IDE\DISKIBM-DTLA-307030_________________________TX4OA60A\5&230D196C&0&0.0.0
IDE\DISKQUANTUM_FIREBALL_CR6.4A_________________A5U.1200\3231393633313639353730312020202020202020
*/
这难道是硬盘的卷标号?