我运行一个(C#)服务,该服务将一些键盘输出到其他 UI 应用程序,就像虚拟键盘一样。
Windows 安全性(更准确地说UIPI)限制了我这样做的服务。
为了绕过 UIPI,我为我的服务创建了一个清单,其中 UIAccess 标志设置为 "true" :
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
<requestedExecutionLevel level="asInvoker" uiAccess="true" />
</requestedPrivileges>
</security>
</trustInfo>
关于文档,服务必须遵守两个条件才能提升到 UIAccess :
- 服务必须经过数字签名
- 该服务必须从安全位置运行(管理员只能进行 R/W 访问,例如 C:\Program Files)
我的服务尊重这两个条件。
当我尝试启动我的服务时,我收到以下错误:
错误 740:请求的操作需要提升
我认为我的服务会自动提升并能够使用 UIAccess 运行。我错过了什么?
其他炎症 :
- 该服务正在运行本地系统帐户
- 该服务以“asInvoker”执行级别运行
- 我尝试禁用以下本地策略:“仅提升安装在安全位置的 UIAccess 应用程序”和“仅提升已签名和验证的可执行文件”