我们正在调查UWP是否可以替代我们的WPF应用程序。在我们的WPF应用程序中,我们使用可扩展性(插件)为我们的应用程序添加其他(客户特定的)逻辑。我们目前使用NuGet包来部署/更新这些扩展并在运行时加载它们。
在UWP中,是否有可能:
答案 0 :(得分:4)
从周年纪念更新开始UWP本身支持可通过Windows应用商店分发的应用扩展。您可以找到更多信息here,here或here。
您可以在开发人员中心信息中心中管理您的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加载它。