我正试图弄清楚如何解决特权获取问题.
该应用程序需要桌面访问,因此无法作为Windows服务执行:它必须创建一个窗口,用于接收其他进程使用SendMessage发送的消息(它必须用于等待消息确认).
应用程序应在用户登录时启动,并将管理用户会话(管理应用程序,窗口......).一次只能管理一个用户.
我要问的是哪个是请求权限获取的最佳解决方案,因为应用程序需要它(执行调用SetWindowsHook的进程).
拥有完全兼容的UAC应用程序需要采取哪些明确的行动?(我的意思是在构建和部署阶段?
例如,我使用mt.exe包含以下清单文件(使用VS2005):
<?xml version="1.0" encoding="utf-8"?>
<asmv1:assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns:asmv2="urn:schemas-microsoft- com:asm.v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
security>
<applicationRequestMinimum>
<defaultAssemblyRequest permissionSetReference="Custom" />
<PermissionSet class="System.Security.PermissionSet" version="1" Unrestricted="true" ID="Custom" SameSite="site" />
</applicationRequestMinimum>
<requestedPrivileges>
<requestedExecutionLevel level="requireAdministrator" uiAccess="false"/>
</requestedPrivileges>
</security>
</trustInfo>
</asmv1:assembly>
Run Code Online (Sandbox Code Playgroud)
这对你好吗?不,因为它对我不起作用......
*
创建一个额外的用户帐户(但这也适用于Windows域)实际上是有意义的,具有管理员权限来执行受控环境.在没有记录任何用户的情况下创建工作会话(新的桌面工作站)也是可以接受的,但实际上我不知道是否可能.