Запись ключей в реестр 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 шт):

Автор решения: aepot

Сборка приложения должна быть 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-разрядные данные приложений в реестре

→ Ссылка