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

Where are windows universal application registry changes saved?

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

最近我添加了一项检查,以查看该应用程序是否已经 运行 在用户的计算机上。应用程序 运行 第一次创建快捷方式时,还会有条件地显示使用条款和条件。此检查查找并随后设置 HKEY_CURRENT_USER\SOFTWARE.

形式的注册表项

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

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

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

  • Registry.dat
  • User.dat
  • User.Classes.dat

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

%localappdata%\Packages<APPID>\SystemAppData\Helium

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