在用户安装中访问UWP软件包中的本机可执行资源的问题

问题描述 投票:0回答:1

我有一个Windows本机二进制文件(实际上是它们的一小部分,但其中一个是其他所有文件的“控制器”),我希望能够将其放入Windows应用商店。控制器需要提升运行。它们旨在与安装程序和完全不适合AppContainer的工作流一起使用,因此我使用的是Desktop Bridge(打包Win32)。这些文件很旧,陈旧,绝对不能在短期内改写,所以我得出结论,我需要创建一个MSIX程序包和工作流,以包装原始二进制文件(尽管有一些小改动)。因此,我现在所拥有的是一个包含以下内容的软件包:

  • 二进制文件,以与本机安装中相同的关系排列在软件包中;
  • 启动中间二进制文件的.net中间过程,旨在运行完全信任;
  • 一个UWP UI程序,它将启动中间完全信任;
  • 一个服务提供者,它在UI和中介之间进行通信。

当我将软件包安装到计算机的admin帐户并运行它时,一切正常。当我将其安装到用户帐户时,只要它也安装在同一台计算机上的管理员帐户中,它就可以正常工作。但是,如果仅将其安装到用户帐户而不是管理员帐户上,则中间设备将无法启动控制器。它产生的错误是“找不到文件”(我知道这可能意味着任何东西)。实际上,我可以在两者上安装,然后在用户帐户中运行它,然后从管理员帐户中删除它,然后在用户帐户中失败。

无论是我将其侧面加载到开发机器上,还是从商店下载它,都会发生不当行为。这是一个可靠的失败,可以在W10的多个不同版本上证明。

进行一点鼠标移动表明该文件恰好是中间文件认为的位置(在Program Files \ WindowsApps的安装目录中),并且无论是否存在管理员安装,都不会改变。此外,无论是否有管理员安装,访问控制设置都相同。实际上,我找不到any差异来告诉用户管理员是否已安装它。但是某些原因导致了错误,并且我不知道在哪里寻找它。

我想强调:这不是控制器以某种方式出现错误的问题。控制器甚至无法运行。我看到UAC提示符(可以正确识别文件),然后得到的第二件事是Process.Start()内部的File Not Found异常。

有人经历过类似的事情吗,或者对如何控制不同用户的安装有更深入的了解?谢谢。

编辑:我想我现在已经对自己感到满意,这不是找到文件的失败,而是提升运行的失败。当中间节点尝试运行二进制文件而没有提升时,二进制文件正确启动(然后由于缺少其自身行为的权限而随后失败)。当然,没有AUC提示。那么,什么会导致UAC提示后无法提升高度?

---编辑---

根据https://stefanwick.com/2018/10/07/app-elevation-samples-part-3的演示,我制作了一个玩具应用,它演示了完全相同的效果。我已经在商店中发布了它,并通过了认证。我在商店中还看不到任何方式将某个应用标记为不适合非管理员安装(我也不希望)。

我现在可以肯定这不是我的应用程序中的错误,而是Windows中的错误。有人知道我如何举报吗?

uwp windows-10-universal desktop-bridge full-trust
1个回答
0
投票

对不起,我的回复很晚。我与工程团队取得了联系。我们需要您使用Process Monitor捕获一些数据以供我们分析。

以下是步骤:

您将需要从不良(活动批处理启动失败)和状况良好(活动批处理成功启动)中收集日志

<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLmltZ3VyLmNvbS81Y3ZEczdwLmpwZyJ9” alt =“ Imgur”>

  • 选择过滤器-> 过滤器...,然后单击重置,然后单击应用,然后单击确定

<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLmltZ3VyLmNvbS9FU3FlVnpyLnBuZyJ9” alt =“ Imgur”>

  • 单击工具栏中的Capture图标(图标上的红色叉号将消失)

<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLmltZ3VyLmNvbS9ITFlYOXdQLnBuZyJ9” alt =“ Imgur”>

  • 现在您应该能够看到软件中显示的事件,如下所示,这意味着该工具开始捕获系统中的事件,从现在开始,请尽快重现该问题,否则日志将很大。大小。

<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLmltZ3VyLmNvbS9pNkNjRllELnBuZyJ9” alt =“ Imgur”>

  • 启动应用程序活动批处理,直到显示dll丢失错误消息。然后通过再次单击Capture图标来停止事件捕获。

  • 确保将所有事件保存到.pml文件中并退出过程监视工具。

<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLmltZ3VyLmNvbS9TYTRyMGYxLnBuZyJ9” alt =“ Imgur”>

  • 重复上述过程以取得良好效果。

如果您已捕获数据,请与我们共享,我们可以帮助您分析数据并查看问题原因。

最诚挚的问候。

© www.soinside.com 2019 - 2024. All rights reserved.