首页 > 解决方案 > Cryptography MachineGuid 问题

问题描述

我想知道如何获得名为 MachineGuid 的 SOFTWARE\Microsoft\Cryptography 密钥。当我在 C# .Net Core Console 应用程序上执行此操作时,结果显示 SOFTWARE\Microsoft\Cryptography 和密钥。

现在我在 C# .Net Framework Windows Form 中进行了尝试,它从那里向我显示 SOFTWARE\Wow6432Node\Microsoft\Cryptography 和密钥 MachineGuid。我的代码没有改变,就在这里。

string keyS = string.Empty;
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")
                {
                    keyS = resultObjX64.ToString();
                }
                if (resultObjX86 != null && resultObjX86.ToString() != "default")
                {
                    keyS = resultObjX86.ToString();
                }

谁能告诉我为什么以及如何解决这个问题?

标签: c#runtime-error

解决方案


推荐阅读