Win32库中的非白名单API可以在WinRT应用程序中使用吗?

时间:2015-04-14 20:24:57

标签: winapi windows-8 windows-runtime windows-store-apps

我正在使用C ++构建适用于桌面的Windows应用商店应用,我需要使用未列入白名单的Win32 API。对于某些背景,WinRT应用可以使用only white-listed Win32 APIs。我知道Win32库可以在WinRT应用程序中使用,但我的问题是库是否包含非白名单的API调用?如果库是DLL还是静态库,这有关系吗?我不会将此应用程序提交到Windows应用商店,因此只要应用程序正常运行,我就不会担心它会被MS批准。

1 个答案:

答案 0 :(得分:1)

如果您可以通过支持的API获得相同的行为,那么我强烈建议您这样做。如果没有,那么请查看brokered Windows Runtime Components以允许侧载的Windows运行时应用程序调用桌面环境中的组件,然后可以使用任何桌面API。

如果您通过商店进行部署,那么应用必须通过认证,并且只能使用或链接到允许的API。如果应用程序包含任何引用被阻止API的库,则该应用程序不会通过认证。

如果您没有通过商店进行部署,则建议通过认证,但不是必需的。该应用程序可以链接和调用不允许用于Windows应用商店应用的API,但不保证该行为。从Windows应用商店应用的上下文中,功能可能无法正常工作。在某些情况下,它可能总是失败。在其他情况下,它有时会失败。在其他人可能会成功。不受支持的行为可能会更改,恕不另行通知使用代理的Windows运行时组件从桌面环境调用桌面API将更安全,更一致。

如果库是DLL或静态库,那么高级别并不重要;但是,由于链接器可能会从静态库中删除未使用的调用,因此链接到包含不允许但未使用的调用的静态库可能会通过认证,而链接到具有相同调用的DLL则会失败。