我正在C#中开发一个库,它使用以下3个变量生成一个唯一的硬件ID
我可以在.NET和Mono中获得机器名称和MAC地址,但是我只能获得.NET中的硬盘序列号。有没有人知道是否有任何可能的方法获得硬盘驱动器序列号,或者我应该使用另一个变量(例如: CPU名称、主板ID等)?
发布于 2012-02-27 00:45:14
发布于 2017-08-17 12:21:46
您也可以通过ioreg获得用户权限。
从贝壳中:
-p IOService -n AppleAHCIDiskDriver -r|grep \“序列号\”{print '{print $NF;}‘
以编程方式:
uint GetVolumeSerial(string rootPathName)
{
uint volumeSerialNumber = 0;
ProcessStartInfo psi = new ProcessStartInfo();
psi.FileName = "/usr/sbin/ioreg";
psi.UseShellExecute = false;
psi.Arguments = "-p IOService -n AppleAHCIDiskDriver -r -d 1";
psi.RedirectStandardOutput = true;
Process p = Process.Start(psi);
string output;
do
{
output = p.StandardOutput.ReadLine();
int idx = output.IndexOf("Serial Number");
if (idx != -1)
{
int last = output.LastIndexOf('"');
int first = output.LastIndexOf('"', last - 1);
string tmp = output.Substring(first + 1, last - first - 1);
volumeSerialNumber = UInt32.Parse(tmp);
break;
}
} while (!p.StandardOutput.EndOfStream);
p.WaitForExit();
p.Close();
return volumeSerialNumber;
}https://stackoverflow.com/questions/9456879
复制相似问题