Windows 通用应用程序注册表更改保存在哪里?

问题描述

我有一个 Windows 桌面应用程序,它使用带有侧载的 msix 系统进行部署。这意味着当我尝试将文件保存到应用程序的 appdata 文件夹时,应用程序会访问 %appdata%..\Local\Packages_。我已经学会了处理这种怪癖。

最近我添加一个检查,看看应用程序是否已经在用户的机器上运行。应用程序首次运行时会创建快捷方式,并有条件地显示使用条款和条件。此检查查找并随后设置 HKEY_CURRENT_USER\SOFTWARE 形式的注册表项。

问题是这似乎也被沙盒化了。检查成功检测到第一次应用程序启动,并且不会在后续启动时触发。但是,注册表项不存在并且在注册表编辑器中不可见。我添加一个像“uniquestringasdjkhdjkfhd”这样的dword值并搜索了它,但注册搜索功能没有找到它。

这让调试变得非常困难,因为我无法测试全新安装状态。我需要能够删除此密钥及其所有子项。有谁知道超级秘密的windows通用注册表隐藏在哪里?

解决方法

所有注册表操作都被重定向到特殊的每应用注册表配置单元。您的包可以包含以下配置单元,如果您提取其内容,则可以在单独的文件中看到:

  • 注册表.dat
  • 用户.dat
  • User.Classes.dat

所有 HKLM 条目都将位于 Registry.dat 文件下,而每个用户的注册表条目将位于相应的配置单元中。您的应用程序第一次尝试写入其中一个时,操作将被重定向并写入一个 .dat 文件:

%localappdata%\Packages\SystemAppData\Helium

阅读此扩展 introduction guide on MSIX 以了解有关应用在其容器内的行为方式的更多信息。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...