2017-07-12 42 views
0

背景:调试如何使德尔福APPLIC看到真正的注册表 - 而不是虚拟的

我开发一个Windows服务和使用注册表来获取参数(使用下面的关键参数服务条目)。

德尔福安装为AppWave应用程序(长的故事我不能在这里告诉),因此,当调试它进入一个虚拟副本[1],而不是实打实的[2]。

我检测到使用 Process Monitor记录服务的注册表活动之后。如果我运行服务外部德尔福,应用程序 正常访问真正的密钥。

问题:有一些方法来circunvent流的核心和调试应用程序 访问实际的注册表项?

注意到MODS:因为没有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
+0

将它转换成答案,@RemyLebeau ... –

回答

0

我没有找到方法。远程调试器方法 - suggested by Remy's answer - 在同一台机器上使用时,受到StreamingCore服务影响。

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

1

AppWave的整点是沙箱和虚拟化应用。因此,不,AFAIK您的服务无法在沙箱内运行时绕过AppWave的注册表虚拟化。

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

+0

试过了,但没有奏效。使用CodeSite进行调试。 –