我已经用java开发了我的远程屏幕共享软件。它运行良好,但当使用UAC时,允许/不允许提示出现在屏幕上,但远程屏幕无法看到它。因此,每次用户必须手动允许它。我想知道如何解决这个问题。
发布于 2014-01-01 06:02:56
这正是创建应用程序程序集清单中的uiAccess属性的目的。
我将从微软AppCompat Guy的博客中盗取并引用:
使用uiAccess属性requestedExecutionLevel改进提供桌面远程控制的应用程序 你必须提升一个应用程序。当您这样做时,您不会看到UAC对话框,相反,最终用户会看到。即使您决定向用户提供密码(这种情况发生了),您也无法控制或甚至看不到提升的应用程序。 当这种情况发生时,很难成为一个服务台。 下面是我看到的解决这个问题的三个解决方案:
我希望这三个人都做了些什么:
大多数人并不真正理解这是为了什么,而UAC清单通常只是一个复制/粘贴事件。但是远程桌面开发人员关注它是值得的。对于任何普通的软件,你通常都希望远离它--这是危险的,并且避开了一个重要的安全特性(UIPI)。但是,如果您正在远程处理桌面,这正是您想要的-您需要能够看到一切!
事实上,如果不对您的应用程序进行数字签名,我们就不允许您设置它,这是非常危险的。默认情况下,还必须将其安装在安全位置(如Program )。可以将组策略设置为不需要安全位置,但没有不需要签名的选项。
然而,一旦建立起来,它就非常强大。您将能够远程任何类型的窗口-任何完整性水平。没有空白的,没有反应的屏幕。无论正直程度如何,一切都会给人留下深刻印象。
对于tl;dr版本,下面是带有uiAccess=true选项的组装清单:
<?xml version='1.0' encoding='UTF-8' standalone='yes'?>
<assembly xmlns='urn:schemas-microsoft-com:asm.v1'
manifestVersion='1.0'>
<assemblyIdentity
version="1.0.0.0"
processorArchitecture="X86"
name="client"
type="win32"
/>
<description>Oh god not Java</description>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="asInvoker"
uiAccess="true"/>
</requestedPrivileges>
</security>
</trustInfo>
</assembly>https://stackoverflow.com/questions/18826248
复制相似问题