我有一个Windows本机二进制文件(实际上是它们的一小部分,但其中一个是其他所有文件的“控制器”),我希望将其放入Windows应用商店。控制器需要提升运行。它们旨在与安装程序和完全不适合UWP的工作流一起使用,因此我不需要Desktop Bridge。这些文件很旧,陈旧,绝对不能在短期内改写,因此我得出结论,我需要创建一个UWP程序包和工作流,以包装原始二进制文件(尽管有一些小改动)。所以,我现在得到的是一个包含以下内容的软件包:
当我将软件包安装到计算机的admin帐户上并运行它时,一切正常。当我将其安装到用户帐户时,只要它也安装在同一台计算机上的管理员帐户中,它就可以正常工作。但是,如果仅将其安装到用户帐户而不是管理员帐户上,则中间设备将无法启动控制器。它产生的错误是“找不到文件”(我知道这可能意味着任何东西)。实际上,我可以同时安装它们,以用户帐户运行它,然后从管理员帐户中删除它,然后在用户帐户上失败。
无论是将其侧面加载到开发机器上还是从商店下载,都会发生不当行为。这是一个可靠的失败,可以在W10的多个不同版本上证明。
一些鼠标移动表明该文件恰好是中间文件认为应该存在的位置(在Program Files \ WindowsApps的安装目录中),并且无论是否存在管理员安装,都不会改变。此外,无论是否有管理员安装,访问控制设置都相同。实际上,我找不到任何可以告诉用户管理员是否已安装的区别。但是某些原因导致了错误,我不知道在哪里寻找它。
我要强调:这不是控制器以某种方式出现异常的问题。控制器甚至无法运行。我看到UAC提示符(可以正确识别文件),然后得到的第二件事是Process.Start()内部的File Not Found异常。
是否有人经历过类似的事情,或者对如何控制不同用户的安装有更深入的了解?谢谢。
编辑:我想我现在已经对自己感到满意,这不是找到文件的失败,而是运行提升的失败。当中间节点尝试运行二进制文件而没有提升时,二进制文件正确启动(然后由于缺少其自身行为的权限而随后失败)。当然,没有AUC提示。那么,什么会导致UAC提示后无法提升高度?
---编辑---
我已经根据https://stefanwick.com/2018/10/07/app-elevation-samples-part-3上的演示制作了一个玩具应用,该应用演示了完全相同的效果。我已经在商店中发布了它,并通过了认证。我在商店中还看不到任何方式来将应用标记为不适合非管理员安装(我也不希望)。
我现在可以肯定这不是我的应用程序中的错误,而是Windows中的错误。有人知道我如何举报吗?
答案 0 :(得分:0)
抱歉,我的回复很晚。我与工程团队取得了联系。我们需要您使用Process Monitor捕获一些数据以供我们分析。
以下是步骤:
您将需要从不良(活动批处理启动失败)和状况良好(活动批处理成功启动)中收集日志
Procmon.exe
启动应用程序Active Batch,直到显示dll丢失错误消息。然后,再次单击 Capture (捕获)图标,停止事件捕获。
确保将所有事件保存到.pml
文件中,然后退出进程监视工具。
如果您已捕获数据,请与我们分享,我们可以帮助您分析数据并查看问题原因。
最诚挚的问候。