UWP应用程序中的可扩展性(插件)

时间:2017-03-22 10:31:30

标签: uwp win-universal-app

我们正在调查UWP是否可以替代我们的WPF应用程序。在我们的WPF应用程序中,我们使用可扩展性(插件)为我们的应用程序添加其他(客户特定的)逻辑。我们目前使用NuGet包来部署/更新这些扩展并在运行时加载它们。

在UWP中,是否有可能:

  1. 在UWP中动态加载插件(我认为这是不可能的,因为沙箱可能会阻止加载动态模块)?
  2. 通过商店提供这些扩展程序(但是它们需要为其他任何用户隐藏)?

2 个答案:

答案 0 :(得分:4)

从周年纪念更新开始UWP本身支持可通过Windows应用商店分发的应用扩展。您可以找到更多信息hereherehere

您可以在开发人员中心信息中心中管理您的UWP应用的可见性(我认为它与应用扩展程序的工作方式相同)。看看here以获取更多信息。

答案 1 :(得分:1)

LoadPackagedLibrary可以在UWP中动态加载插件。

但它只能在appx中加载dll。

如何使用LoadPackagedLibrary,请参阅https://msdn.microsoft.com/en-us/library/mt186162.aspx

如果你想使用其他目录中的win32 dll,请获取可以使用它的LoadLibrary。

您可以使用

MEMORY_BASIC_INFORMATION info = {};  
if (VirtualQuery(VirtualQuery, &info, sizeof(info)))  
{
    auto kernelAddr = (HMODULE)info.AllocationBase;
    auto loadlibraryPtr = GetProcAddress(kernelAddr, "LoadLibraryExW");
    // load your library here ...
}

获取loadlibrary并使用loadlibrary dll。

请参阅https://hjc.im/3-ways-to-bypass-wack/

Ms使用PE和P / Invoke来判断uwp是否使用了不允许的dll。

因此您可以使用loadlibrary加载它。