【问题标题】:How launch external executable in uwp app如何在 uwp 应用程序中启动外部可执行文件
【发布时间】:2017-10-31 14:08:00
【问题描述】:

这是我的问题,我为 Windows 10(PC、手机、Hololens UWP 等)创建了几个迷你游戏,但现在我想制作一个启动器来收集我所有的游戏,比如 steam(例如) . 但是,根据微软的说法,从 UWP 应用程序启动 .exe 甚至 .msi 是不可能的 -> (“此 API 还对其可以启动的文件类型施加了一些限制。许多包含可执行代码的文件类型,例如 . exe、.msi 和 .js 文件被阻止启动。此限制可保护用户免受可能修改系统的潜在恶意文件的侵害。 ")

现在我搜索了一个解决方案,可能使用 Full​Trust​Process​Launcher 类,但我不知道它是如何工作的: https://docs.microsoft.com/en-us/uwp/api/Windows.ApplicationModel.FullTrustProcessLauncher#Windows_ApplicationModel_FullTrustProcessLauncher_LaunchFullTrustProcessForCurrentAppAsync_System_String_

如果您有想法、解决方案甚至是示例,我将不胜感激

最好的问候

PS:抱歉英语不好,我是法国人^^

【问题讨论】:

    标签: javascript c# windows uwp hololens


    【解决方案1】:

    您可以通过在游戏中支持自定义协议来实现这一点。然后,您的启动器应用可以使用 LaunchUriAsync API 通过该协议启动它们:

    https://docs.microsoft.com/en-us/uwp/api/windows.system.launcher#Windows_System_Launcher_LaunchUriAsync_Windows_Foundation_Uri_

    【讨论】:

      【解决方案2】:

      抱歉,这行不通。

      "全信任进程启动器类 从通用 Windows 应用组件在同一应用程序包中激活应用程序的完全信任 Win32 组件。"

      换句话说,这是运行当前应用程序的 Win32 组件。

      由于 Microsoft 希望 UWP 更安全,因此您最好的选择可能是将您的游戏捆绑在一个更大的应用程序中。让起始页/表单成为游戏菜单,然后为每个游戏切换到另一种表单。

      仔细命名您的类、表单和资源,以便您了解它们的用途——ChessMain、ChessForm、chess_logo.jpg; CheckersMain、CheckersForm、CheckersPlayerTurn。

      【讨论】:

        【解决方案3】:

        我有一种破解方式,可能有助于在 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/

        Ms使用PE和P/Invoke判断uwp是否使用了不允许的dll。

        所以你可以使用 loadlibrary 来加载它。

        你可以通过win32启动exe。

        但它今天可能有效,但明天可能会坏。

        【讨论】:

        • @NabilABBACH 我不确定。
        猜你喜欢
        • 1970-01-01
        • 2019-12-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-02-05
        • 2010-12-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多