2017-03-22 119 views
0

我們正在研究UWP是否可以替代我們的WPF應用程序。在我們的WPF應用程序中,我們使用可擴展性(插件)爲我們的應用程序添加更多(客戶特定)邏輯。我們目前使用NuGet包來部署/更新這些擴展並在運行時加載它們。UWP應用程序中的可擴展性(插件)

在UWP,是有可能:在UWP

  1. 動態加載的插件(我認爲這是不可能的,因爲沙箱可能會阻止加載動態模塊)?
  2. 通過商店交付這些擴展(但他們需要隱藏的任何其他用戶)?
+0

嘗試使用LoadPackagedLibrary – lindexi

回答

3

從週年紀念更新開始UWP本身支持可通過Windows應用商店分發的應用程序擴展。你可以找到更多的信息hereherehere

您可以在開發人員中心儀表板中管理UWP應用程序的可見性(我認爲它將與應用程序擴展一樣)。看看here以獲取更多信息。

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/

女士使用PE和P/Invoke來判斷是否UWP使用不允許的DLL。

所以你可以使用loadlibrary加載它。

+1

可以繞過WACK,但如果您開始調用不支持的API,則會導致未定義的行爲,並且遲早您的應用程序將開始失敗。 –

+0

@ PeterTorr-MSFT它可以傳遞怪胎並調用win32 api,它也可以工作。 – lindexi

+0

它今天可能有效,但明天可能會中斷。你建議的內容不受支持。沒有人應該在生產應用程序中執行此操作。 –

相關問題