如何使调试的 Delphi 应用程序看到真实注册表 - 而不是虚拟注册表

How to make Delphi applic debugged see the REAL registry - and not the virtual one

背景:

我正在开发一个 windows 服务并使用注册表获取参数(使用服务条目下方的关键参数)。

Delphi 作为 AppWave 应用程序安装(长话短说 我不能在这里说 )因此在调试时它会转到虚拟副本 [1] 而不是真正的交易 [2]。

我检测到在使用服务的登录注册表 activity 之后 过程监视器。如果我运行服务外面Delphi,应用 正常访问真实密钥。

问题:有一些方法可以绕过 Streaming Core 并调试应用程序 访问真正的注册表项?

模组注意事项: 因为没有 AppWave 标签,我无法包含它 - 我试过了。

  1. 虚拟化副本:HKEY_LOCAL_MACHINE\software\Embarcadero\StreamingCore\Profiles\fabricio\Applications\{<<GUID>>}\Virtualization\Keys\whklm\SYSTEM\CurrentControlSet\services\[service]\Parameters]
  2. 正品:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\[service]\Parameters

AppWave 的全部意义在于沙箱和虚拟化应用程序。所以不,据我所知,当 运行 在沙箱内时,您的服务无法绕过 AppWave 的注册表虚拟化。

我自己从未使用过 AppWave,但假设它允许网络连接,您可能不得不使用 IDE 的 remote debugger。 运行沙箱外的服务,然后让IDE连接到远程调试器,远程调试器就可以调试服务进程了。

我没有找到方法。远程调试器方法 - - 当在同一台机器上使用时,会受到 StreamingCore 服务的影响。

所以使用的方法是记录日志来进行调试。为此,使用 CodeSite Express(非常方便,包含在 Delphi 中)进行日志记录。