Запись ключей в реестр Windows 11
Всем привет, проясните мне ситуацию пожалуйста. Создаю раздел и ключи в реестре
RegistryKey CurrentUserKey = Registry.CurrentUser;
RegistryKey TestKey = CurrentUserKey.CreateSubKey("Software\\Test1\\Test");
TestKey.SetValue("test_k", "blablabla");
TestKey.Close();
Открываю реестр, раздела такого нет, странно думаю. Добавляю код
RegistryKey CurrentUserKey = Registry.CurrentUser;
RegistryKey TestKey = CurrentUserKey.OpenSubKey("Software\\Test1\\Test");
if (TestKey != null)
{
string test_v = TestKey.GetValue("test_k").ToString();
System.Diagnostics.Debug.WriteLine("test_k: " + test_v);
}
И в консоли вижу "test_kP: blablabla"
Студия и редактор реестра запускаются от одного и того же пользователя, я прекрасно понимаю, что чудес не бывает.
PS: Код вырванный из контекста это приложение NET MAUI Blazor App, которое компилируется в MSIX возможно данный тип приложений запускается от какого-то другого пользователя?
Ответы (1 шт):
Сборка приложения должна быть x64, не Any CPU, а именно x64. В противном случае вы будете по умолчанию обращаться к x86 сектору реестра, либо разрядность реестра нужно явно указывать при создании ключа RegistryView.Registry64
(Registry View).
Если у вас Any CPU приложение, то это может помочь
RegistryKey baseKey = RegistryKey.OpenBaseKey(RegistryHive.CurrentUser, RegistryView.Registry64);
RegistryKey testKey = baseKey.OpenSubKey(@"Software\Test1\Test");
Но проще собрать под x64, я именно так и делаю.
Пример работы с реестром, который точно работает (в x64 сборке): Сохранение логина при повторной авторизации WPF
Документация: 32- и 64-разрядные данные приложений в реестре