是否可以验证WinRT组件DLL



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

Windows应用程序证书工具包似乎只验证实际的城域应用程序。如何验证WinRT DLL?

编辑:

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

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

我知道在codeplex上有一项工作要为Metro应用程序实现SQL Lite。http://sqlwinrt.codeplex.com/.根据端口的状态,您可能会将其视为一种选择。

我可以看到这会有多有用,但我不知道有任何方法可以验证单个DLL。

然而,有许多隐式和显式检查将要进行,以给您一个非常好的想法。

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

此外,您正在编译的Windows 8 SDK的头文件只公开Win8 Metro API,因此在编译过程中会出现错误(看来您已通过成功编译解决了此问题)。

最后,您的应用程序运行在沙盒环境中,当API试图做一些它不应该做的事情时,例如注册表访问的一个微不足道的例子,您会遇到安全/访问问题。SYSINTERNALS的"进程监视器"是通过查看跟踪过程中的安全/访问问题来在应用程序中观察这一情况的绝佳方式。

考虑到你的问题,我知道这是一个笼统的概括。我希望它能有所帮助。

最新更新