在这里我的问题,我为Windows 10(PC,手机,Hololens UWP,...)制作了一对迷你游戏,但现在我想制作一个发射器来收集我所有的游戏,比如蒸汽(例如) 。 但是,根据微软的说法,从UWP应用程序启动.exe甚至.msi是不可能的 - > (“此API还对可以启动的文件类型施加了一些限制。许多包含可执行代码的文件类型,例如.exe,.msi和.js文件,都被阻止启动。此限制可以保护用户免受潜在恶意攻击可以修改系统的文件。 “)
现在我搜索一个解决方案,也许是使用Full Trust Process Launcher Class,但我不知道它是如何工作的: https://docs.microsoft.com/en-us/uwp/api/Windows.ApplicationModel.FullTrustProcessLauncher#Windows_ApplicationModel_FullTrustProcessLauncher_LaunchFullTrustProcessForCurrentAppAsync_System_String_
如果你有一个想法,一个解决方案甚至一个例子,我将非常感谢
祝你好运
PS:抱歉英语不好,我是法国人^^
答案 0 :(得分:2)
您可以通过在游戏中支持自定义协议来实现此目的。然后,您的启动器应用程序可以使用LaunchUriAsync API通过该协议启动它们:
答案 1 :(得分:1)
抱歉,这不起作用。
“完全信任流程启动器类” 从同一应用程序包中的通用Windows应用程序组件激活应用程序的完全信任Win32组件。“
换句话说,这是运行当前应用程序的Win32组件。
由于Microsoft希望UWP更安全,因此您最好的选择可能是将您的游戏捆绑在一个更大的应用程序中。让开始页面/表单成为游戏菜单,然后切换到每个游戏的另一种形式。
仔细命名您的课程,表格和资源,以便了解它们的用途 - ChessMain,ChessForm,chess_logo.jpg; CheckersMain,CheckersForm,CheckersPlayerTurn。
答案 2 :(得分:0)
我有一种黑客方式可能有助于在uwp中启动exe。
如果你想使用其他目录中的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加载它。
您可以通过win32启动exe。
但它今天可能会奏效但明天可能会破裂。