0

背景:

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

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

在使用 Process Monitor 记录服务的注册表活动后,我检测到了这一点。如果我在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
4

2 回答 2

1

AppWave 的重点是沙盒和虚拟化应用程序。所以不,AFAIK 您的服务在沙箱内运行时无法绕过 AppWave 的注册表虚拟化。

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

于 2017-07-13T19:33:37.313 回答
0

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

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

于 2017-07-28T17:27:23.080 回答