我們正在研究UWP是否可以替代我們的WPF應用程序。在我們的WPF應用程序中,我們使用可擴展性(插件)爲我們的應用程序添加更多(客戶特定)邏輯。我們目前使用NuGet包來部署/更新這些擴展並在運行時加載它們。UWP應用程序中的可擴展性(插件)
在UWP,是有可能:在UWP
- 動態加載的插件(我認爲這是不可能的,因爲沙箱可能會阻止加載動態模塊)?
- 通過商店交付這些擴展(但他們需要隱藏的任何其他用戶)?
我們正在研究UWP是否可以替代我們的WPF應用程序。在我們的WPF應用程序中,我們使用可擴展性(插件)爲我們的應用程序添加更多(客戶特定)邏輯。我們目前使用NuGet包來部署/更新這些擴展並在運行時加載它們。UWP應用程序中的可擴展性(插件)
在UWP,是有可能:在UWP
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/
女士使用PE和P/Invoke來判斷是否UWP使用不允許的DLL。
所以你可以使用loadlibrary加載它。
可以繞過WACK,但如果您開始調用不支持的API,則會導致未定義的行爲,並且遲早您的應用程序將開始失敗。 –
@ PeterTorr-MSFT它可以傳遞怪胎並調用win32 api,它也可以工作。 – lindexi
它今天可能有效,但明天可能會中斷。你建議的內容不受支持。沒有人應該在生產應用程序中執行此操作。 –
嘗試使用LoadPackagedLibrary – lindexi