怎样用C#获取硬盘序列号?

private   string[]   GetMoc()  
  {  
  string[]   str   =   new   string[2];  
  ManagementClass   mcCpu   =   new   ManagementClass("win32_Processor");   
  ManagementObjectCollection   mocCpu   =   mcCpu.GetInstances();  
  foreach(ManagementObject   m   in   mocCpu)  
  {  
  str[0]   =   m["ProcessorId"].ToString();  
  }  
   
  ManagementClass   mcHD   =   new   ManagementClass("win32_logicaldisk");  
  ManagementObjectCollection   mocHD   =   mcHD.GetInstances();  
  foreach(ManagementObject   m   in   mocHD)  
  {  
  if(m["DeviceID"].ToString()   ==   "C:")  
  {  
  str[1]   =   m["VolumeSerialNumber"].ToString();  
  break;  
  }  
  }  
  return   str;  
  }

ManagementClass命名空间是System.Management

以上代码用于获取C盘的序列号,而不是硬盘的固有序号.

获取硬盘的固有序号:

using System;
using System.Runtime.InteropServices;

namespace ArLi.CommonPrj {

#region how use this?
/*
string sVol = getvol.GetVolOf("C");
*/
#endregion

public class getvol{

[DllImport("kernel32.dll")]
private static extern int GetVolumeInformation(
string lpRootPathName,
string lpVolumeNameBuffer,
int nVolumeNameSize,
ref int lpVolumeSerialNumber,
int lpMaximumComponentLength,
int lpFileSystemFlags,
string lpFileSystemNameBuffer,
int nFileSystemNameSize
);

public static string GetVolOf(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("x");
}
}
}

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值