大家好,请帮我澄清一下情况。我在注册表中创建了一个部分和键
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:断章取义的代码是一个编译为 MSIX 的 NET MAUI Blazor 应用程序,也许这种类型的应用程序是由其他用户启动的?
应用程序构建必须是x64,而不是Any CPU,而是x64。否则,您将默认访问x86注册表扇区,或者在创建密钥
RegistryView.Registry64(注册表视图)时必须明确指定注册表位深度。如果你有任何 CPU 应用程序,这可能会有所帮助
但针对 x64 进行编译更容易,这正是我所做的。
使用注册表的一个例子,它肯定有效(在 x64 版本中):重新授权 WPF 时保存登录信息
文档:注册表中的 32 位和 64 位应用程序数据