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



>背景:

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

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

我检测到在使用记录服务的注册表活动后 进程监视器。如果我在德尔福之外运行该服务,则应用程序 正常访问真实密钥。

问: 有一些方法可以绕过流式处理核心并调试应用程序 访问真正的注册表项?

模组注意:由于没有AppWave标签,我无法包含它 - 我试过了。

  1. 虚拟化副本:HKEY_LOCAL_MACHINEsoftwareEmbarcaderoStreamingCoreProfilesfabricioApplications{<<GUID>>}VirtualizationKeyswhklmSYSTEMCurrentControlSetservices[service]Parameters]
  2. 真实交易:HKEY_LOCAL_MACHINESYSTEMCurrentControlSetservices[service]Parameters

AppWave 的全部意义在于沙盒和虚拟化应用程序。因此,不,AFAIK 您的服务在沙盒内运行时无法绕过 AppWave 的注册表虚拟化。

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

我没有找到方法。远程调试器方法 - 由Remy的答案建议 - 在同一台机器上使用时,最终受到StreamingCore服务的影响。

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

最新更新