[英]How launch external executable in uwp app
在这里,我的问题是,我为Windows 10创建了一个小型迷你游戏(PC,电话,Hololens UWP等),但是现在我想制作一个启动器来收集我所有的游戏,例如Steam。 但是,根据Microsoft的说法,不可能从UWP应用程序启动> .exe或.msi->(“此API还对可以启动的文件类型施加了一些限制。例如,许多文件类型都包含可执行代码。 exe,.msi和.js文件被阻止启动。此限制可以保护用户免受可能修改系统的潜在恶意文件的侵害。”)
现在我搜索一个解决方案,也许是使用FullTrustProcessLauncher类,但是我不知道它是如何工作的: https : //docs.microsoft.com/zh-cn/uwp/api/Windows.ApplicationModel.FullTrustProcessLauncher# Windows_ApplicationModel_FullTrustProcessLauncher_LaunchFullTrustProcessForCurrentAppAsync_System_String_
如果您有想法,解决方案甚至是示例,我将不胜感激
最好的祝福
PS:对不起,英语不好,我是法语^^
您可以通过在游戏中支持自定义协议来实现此目的。 然后,您的启动器应用可以使用LaunchUriAsync API通过该协议启动它们:
抱歉,这行不通。
“全信任进程启动器类从同一应用程序包中的通用Windows应用程序组件激活应用程序的完全信任Win32组件。 ”
换句话说,这是要运行当前应用程序的Win32组件。
由于Microsoft希望UWP更加安全,因此最好的选择可能是将游戏捆绑在一个更大的应用程序中。 将开始页面/表格作为游戏菜单,然后为每个游戏切换到另一表格。
仔细命名您的班级,形式和资源,以便您知道它们的用途-ChessMain,ChessForm,chess_logo.jpg; CheckersMain,CheckersForm,CheckersPlayerTurn。
我有一种破解方法,可能有助于在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 ...
}
获取加载库并用于加载dll。
参见https://hjc.im/3-ways-to-bypass-wack/
女士使用PE和P / Invoke来判断uwp是否使用不允许的dll。
因此,您可以使用负载库进行加载。
您可以通过win32启动exe。
但是它可能在今天起作用,但明天可能会失效。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.