Как создать раздел реестра в разделе Computer \ HKEY_LOCAL_MACHINE \ SOFTWARE \ from C # - PullRequest
0 голосов
/ 10 февраля 2019

У меня есть решение .net, которое генерирует сборку в X86 (в качестве целевой платформы).Я ожидаю, что нижеупомянутая запись ключа реестра должна быть создана в Computer\HKEY_LOCAL_MACHINE\SOFTWARE\ FolderName, но она создает запись в Computer\HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node, чего здесь не ожидается.Если я изменю решение .net на X64 (Build Target Platform), то оно создается в «локальном компьютере \ ПО»

Screenshot

Microsoft.Win32.RegistryKey subKey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey("SOFTWARE");
            if (checkIfKeyExists(subKey))
            {
                subKey =  Microsoft.Win32.Registry.LocalMachine.OpenSubKey("SOFTWARE\\FolderName");
                if (!checkIfKeyExists(subKey))
                {
                    Microsoft.Win32.Registry.LocalMachine.CreateSubKey("SOFTWARE\\ FolderName ");
                    Microsoft.Win32.Registry.LocalMachine.SetValue("TestKey", "456788", RegistryValueKind.String);
                }
            }

1 Ответ

0 голосов
/ 10 февраля 2019

32-разрядные приложения по умолчанию будут использовать 32-разрядное представление реестра.Если вы хотите направить доступ к вашему ключу в 64-битные представления, вам нужно открыть кусты реестра вручную, не используя членов класса Registry.

using (var hklm = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64))
using (var key = hklm.CreateSubKey(@"SOFTWARE\FolderName", writable: true))
{
    // do stuff with the key
    if (key.GetValue("TestKey") == null)
        key.SetValue("TestKey", "456788");
}
...