Desktop Bridge allowElevation 受限功能无法正常工作,UAC 后出现错误“请求的操作需要提升”
Posted
技术标签:
【中文标题】Desktop Bridge allowElevation 受限功能无法正常工作,UAC 后出现错误“请求的操作需要提升”【英文标题】:Desktop Bridge allowElevation restricted capability not working properly, error "requested operation requires elevation" after UAC 【发布时间】:2021-05-18 04:10:09 【问题描述】:我已经从https://stefanwick.com/2018/10/01/app-elevation-samples-part-1/下载并编译了应用程序
链接到githubhttps://github.com/StefanWickDev/AllowElevation-Samples/tree/master/Hello%20Elevated%20World
我做了两个版本,只改变了app.manifest中的requestedExecutionLevel
-
与
<requestedExecutionLevel level="highestAvailable" uiAccess="false" />
与<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
在标准用户帐户(非管理员)上运行这两个应用程序 uac 设置为默认值(最大)
#1 的问题 是它不会触发任何 UAC,但我认为它应该触发?在任务管理器中签入时,它显示 Elevated No
#2 的问题在运行 UAC 框时出现,当输入管理员密码时,错误消息显示“请求的操作需要提升” strong> 并且应用程序根本没有启动。
看起来 MSTF 方面出了点问题,还是我遗漏了什么?
Package.manifest 中的功能部分
<Capabilities>
<Capability Name="internetClient" />
<rescap:Capability Name="runFullTrust" />
<rescap:Capability Name="allowElevation" />
</Capabilities>
【问题讨论】:
【参考方案1】:allowElevation
功能允许 Microsoft 合作伙伴和企业创建的应用保留现有桌面功能,这些功能需要在启动时或在应用生命周期内自动提升。
当您使用allowElevation
能力并将级别属性的值设置为highestAvailable
时,应用程序将以当前用户帐户中可用的***别运行。如果当前帐户是管理员,则应用程序可能会询问更高级别。 UAC 将被触发,并在任务管理器中检查时显示 Elevated Yes。如果当前账号为标准账号,则***别为标准用户级别,因此不会触发UAC,在任务管理器中勾选ElevatedNo。
当您使用allowElevation
能力并将级别属性的值设置为requireAdministrator
时,应用程序需要在管理员下运行。
【讨论】:
如果我在管理员用户和用户帐户上安装它是正确的,那么通过在 UAC 中为管理员用户输入正确的凭据,它可以从用户级别正常工作。 但是,如果我也在内置管理员帐户上安装此应用程序,并且该应用程序存在于所有 3 个帐户上并尝试从标准用户帐户运行,如果我使用内置 -在管理员凭据中,如果我提供管理员用户凭据,它会显示错误“确保您输入了正确的名称并重试”。这很奇怪。 我们会为您的问题咨询其他工程师。可能会有一些延迟。 同样在 20H2 这根本不起作用,甚至为内置管理员提供凭据它也会失败并且根本无法从标准用户运行它。 之前的回答不准确,我更新了。以上是关于Desktop Bridge allowElevation 受限功能无法正常工作,UAC 后出现错误“请求的操作需要提升”的主要内容,如果未能解决你的问题,请参考以下文章
iOS开发之__bridge,__bridge_transfer和__bridge_retained
Gravity bridge——IBC Bridge to Ethereum