【问题标题】:Is it possible to validate a WinRT component DLL?是否可以验证 WinRT 组件 DLL?
【发布时间】:2013-07-20 03:40:18
【问题描述】:

我正在尝试让 SQLite 与 WinRT 兼容。我已将 WinRT 不支持的旧调用切换到新调用。现在我已经编译了项目,我想验证它没有使用任何旧的 API 调用或不受支持的调用。

Windows App Cert Kit 似乎只验证实际的 Metro 应用程序。如何验证 WinRT DLL?

编辑:

应用认证工具包中似乎存在错误。它似乎没有验证引用的 dll。如果您将代码移动到应用程序,它会验证它。此外,metro 不支持的调用并不总是存在编译时错误。我需要设置一个标志来在编译时捕获这些错误吗?有问题的文件是一个 C 文件,仅针对该文件关闭了 WinRT 扩展。

【问题讨论】:

  • 还没来得及完成移植。 SQLite 团队似乎正在增加对 WinRT 的支持,可能很快就会完成 :)

标签: c++ windows-8 windows-runtime


【解决方案1】:

对于 Metro 中不支持的调用不引发编译时错误的问题现已在 Consumer Preview 中得到修复。此外,应用认证工具包现在也可以正确验证引用的 dll。

【讨论】:

    【解决方案2】:

    我知道 codeplex 正在努力为 Metro Apps 使用 SQL Lite 实现。 http://sqlwinrt.codeplex.com/。根据端口的状态,您可能会考虑将其作为一种选择。

    我知道这会有什么用,但我不知道有什么方法可以验证单个 DLL。

    但是,将进行一些隐式和显式检查,以便为您提供一个非常好的主意。

    如果您想将您的应用上传到商店,您的 SQL Lite 实现必须是您的软件包的一部分,因此它将在认证过程中得到验证。认证过程将检查您项目中的所有可执行文件和 DLL 并查找不良 API。如果检测到,认证将失败。

    此外,您正在编译的 Windows 8 SDK 具有仅公开 Win8 Metro API 的头文件,因此您会在编译期间遇到错误(看来您已通过成功编译解决了此问题)。

    最后,您的应用程序在沙盒环境中运行,当 API 尝试执行不应该执行的操作时,例如注册表访问的一个简单示例,您将遇到安全/访问问题。来自 SYSINTERNALS 的“进程监视器”是通过在跟踪期间查看安全/访问问题来在您的应用中观察这一点的绝佳方式。

    考虑到您的问题,我知道这是一个广泛的问题。我希望它会有所帮助。

    【讨论】:

    • 您引用的 codeplex 链接是现有 SQLite 代码的包装器,而不是端口。因此,要成功通过认证,您仍然需要一个不使用任何不允许的 API 的 SQLite 编译端口。我已将其包含在示例应用程序中,以验证它是否通过了应用程序认证并且确实通过了。但我不想每次进行更改时都这样做,理想情况下我希望它成为后期构建步骤的一部分。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-14
    • 2019-08-10
    • 1970-01-01
    • 2014-10-03
    • 2012-07-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多