我谦虚的意见,没有一个答案能满足这个问题; 非常直接地要求从注册表中读取MachineGuid的方法...所以这是我的答案:您需要添加对“Microsoft.Win32”的引用。 此代码是为演示目的而编写的,应相应调整。 编辑:有人错误地说x64代码没用。 在64位操作系统中,找到正确的密钥。 所以这个答案是唯一能满足这个问题的答案。
private void buttonGetMachineGuid_Click(object sender, RoutedEventArgs e)
{
try
{
string x64Result = string.Empty;
string x86Result = string.Empty;
RegistryKey keyBaseX64 = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64);
RegistryKey keyBaseX86 = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32);
RegistryKey keyX64 = keyBaseX64.OpenSubKey(@"SOFTWARE\Microsoft\Cryptography", RegistryKeyPermissionCheck.ReadSubTree);
RegistryKey keyX86 = keyBaseX86.OpenSubKey(@"SOFTWARE\Microsoft\Cryptography", RegistryKeyPermissionCheck.ReadSubTree);
object resultObjX64 = keyX64.GetValue("MachineGuid", (object)"default");
object resultObjX86 = keyX86.GetValue("MachineGuid", (object)"default");
keyX64.Close();
keyX86.Close();
keyBaseX64.Close();
keyBaseX86.Close();
keyX64.Dispose();
keyX86.Dispose();
keyBaseX64.Dispose();
keyBaseX86.Dispose();
keyX64 = null;
keyX86 = null;
keyBaseX64 = null;
keyBaseX86 = null;
if(resultObjX64 != null && resultObjX64.ToString() != "default")
{
MessageBox.Show(resultObjX64.ToString());
}
if(resultObjX86 != null && resultObjX86.ToString() != "default")
{
MessageBox.Show(resultObjX86.ToString());
}
}
catch(Exception)
{
}
}
希望这对某人有所帮助。