Вопрос MachineGuid issue

hello
Начинающий
Статус
Оффлайн
Регистрация
21 Дек 2020
Сообщения
181
Реакции[?]
22
Поинты[?]
0
Привет, я пытаюсь получить MachineGuid из SOFTWARE\Microsoft\Cryptography, но получаю его из SOFTWARE\Wow6432Node\Microsoft\Cryptography и он, соответственно другой. Как можно это починить и из-за чего это присходит? У меня компилятор ругался на то, что при использовании анонфайл не получаеться установить безопасное ТLC/SSL соединение, чего не было в консольной проге. Я добавил строку, которая добавляла Программа: .Net 4.7.2 Framework Windows Form(C#)

Примечание: всё работало нормально в .Net Core Console App(C#)

C#:
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();
                }
 
Олдфаг
Статус
Оффлайн
Регистрация
18 Фев 2019
Сообщения
2,826
Реакции[?]
1,853
Поинты[?]
24K
Привет, я пытаюсь получить MachineGuid из SOFTWARE\Microsoft\Cryptography, но получаю его из SOFTWARE\Wow6432Node\Microsoft\Cryptography и он, соответственно другой. Как можно это починить и из-за чего это присходит? У меня компилятор ругался на то, что при использовании анонфайл не получаеться установить безопасное ТLC/SSL соединение, чего не было в консольной проге. Я добавил строку, которая добавляла Программа: .Net 4.7.2 Framework Windows Form(C#)

Примечание: всё работало нормально в .Net Core Console App(C#)

C#:
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();
                }
Объясните вопрос четче. Из вашего рассказа, я честно говоря, так ничего и не понял :(
 
hello
Начинающий
Статус
Оффлайн
Регистрация
21 Дек 2020
Сообщения
181
Реакции[?]
22
Поинты[?]
0
У меня вин7. Из кода(приложен был) я получаю не ключ MachineGuid отсюда(SOFTWARE\Microsoft\Cryptography), а ключ MachineGuid отсюда(SOFTWARE\Wow6432Node\Microsoft\Cryptography), хотя в коде указано, что программа должна получить именно ключ из SOFTWARE\Microsoft\Cryptography. На вин10 такой проблемы нет.
 
Сверху Снизу