1

所以基本上我对调试器的微不足道的研究导致我通过在原始进程周围创建一个包装器来工作,并且该进程在包装器内运行。(不是在调试器附加到已经运行的进程的情况下)。那么它是如何用于 Metro 应用程序的呢?Metro 应用程序只能在安装时分配给它们的应用程序容器内运行(实际上并未安装真正意义上的 Metro 应用程序),并且应用程序容器和 Metro 应用程序之间的映射记录在注册表项中。(全部来自我的研究,不知道如何正确,如果我错了请纠正我)。那么调试器是否也在同一个应用容器中运行?

编辑:关于为什么我想学习这个的驱动力的简短说明。我坚持这一点。所以我在想我是否可以通过将桌面应用程序作为调试器来实现这个 IPC(或者自动化调试器,这变得更加令人毛骨悚然)并使用 DebugBreak 模拟 Metro 应用程序和桌面应用程序之间的通信(从 Metro 应用程序内部) 和 Continue 语句(来自伪调试器应用程序)

4

2 回答 2

3

“包装”的心理形象是错误的。调试器只是一个单独的进程,它使用内置的 Windows 支持进行调试。它具有 SE_DEBUG 权限,由具有普通桌面应用程序权限的应用程序启动。像 Visual Studio。所以它不会在 AppContainer 本身内部运行。

于 2012-06-22T06:24:06.553 回答
1

韩的回答是对的。对于 Metro 风格的应用程序,我们引入了一项新功能,允许您启动暂停的应用程序,我们将使用命令行选项启动已注册的调试器以指示要附加到的进程。有关此功能的信息,请参阅IPackageDebugSettings API,或查看http://winrt.codeplex.com项目以获取示例用法。我不确定,但这个 API 可能存在开发者许可限制。

至于您在 Metro 风格应用程序和桌面应用程序之间支持 IPC 的初衷 - 正如链接线程所述,这是不受支持的。

于 2012-08-09T18:38:56.137 回答