vib*_*bgy 6 c# wmi serial-number
我使用以下查询来获取硬盘序列号.
ManagementObjectSearcher("SELECT * FROM Win32_PhysicalMedia");
Run Code Online (Sandbox Code Playgroud)
它为admin用户和非admin用户返回不同的序列号,如下所示:
管理员 - WD-WCAYUS426947 非管理员 - 2020202057202d44435759415355323439363734
当试图将非管理员序列放入十六进制到char转换器时,它给了W-DCWYASU249674,这实际上是每2个字符的字符交换.
有没有想要获取正确的序列而不需要使用非hexed格式?
正如评论中所述:这似乎是Windows中一个未解决的错误,尽管微软知道它.
解决它的方法是转换十六进制字符串并交换数字,我写了一个为你做这个的方法,随意根据你的需要编辑它:
public static string ConvertAndSwapHex(string hex)
{
hex = hex.Replace("-", "");
byte[] raw = new byte[hex.Length / 2];
for (int i = 0; i < raw.Length; i++)
{
int j = i;
if (j != 0)
{
j = (j % 2 == 1 ? j-1 : j+1);
}
raw[j] = Convert.ToByte(hex.Substring(i * 2, 2), 16);
}
return System.Text.Encoding.UTF8.GetString(raw).Trim(' ', '\t', '\0');
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1811 次 |
| 最近记录: |