首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在运行远程桌面应用程序时访问UAC提示?

如何在运行远程桌面应用程序时访问UAC提示?
EN

Stack Overflow用户
提问于 2013-09-16 10:54:16
回答 1查看 3.1K关注 0票数 2

我已经用java开发了我的远程屏幕共享软件。它运行良好,但当使用UAC时,允许/不允许提示出现在屏幕上,但远程屏幕无法看到它。因此,每次用户必须手动允许它。我想知道如何解决这个问题。

EN

回答 1

Stack Overflow用户

发布于 2014-01-01 06:02:56

这正是创建应用程序程序集清单中的uiAccess属性的目的。

我将从微软AppCompat Guy的博客中盗取并引用:

使用uiAccess属性requestedExecutionLevel改进提供桌面远程控制的应用程序 你必须提升一个应用程序。当您这样做时,您不会看到UAC对话框,相反,最终用户会看到。即使您决定向用户提供密码(这种情况发生了),您也无法控制或甚至看不到提升的应用程序。 当这种情况发生时,很难成为一个服务台。 下面是我看到的解决这个问题的三个解决方案:

  • 什么都不做。这就是我们的解决方案。每次涉及到海拔,它都失败了。
  • 安装服务。X公司就是这么做的。它要求用户知道管理密码,这对我的客户来说是个问题
  • 运行提升的应用程序。Y公司就是这么做的。它要求用户知道管理密码(与我的客户有问题),也不允许您与任何运行在系统完整性级别的窗口进行交互(因此不完整的解决方案)。

我希望这三个人都做了些什么:

  • uiAccess = true的清单

大多数人并不真正理解这是为了什么,而UAC清单通常只是一个复制/粘贴事件。但是远程桌面开发人员关注它是值得的。对于任何普通的软件,你通常都希望远离它--这是危险的,并且避开了一个重要的安全特性(UIPI)。但是,如果您正在远程处理桌面,这正是您想要的-您需要能够看到一切!

事实上,如果不对您的应用程序进行数字签名,我们就不允许您设置它,这是非常危险的。默认情况下,还必须将其安装在安全位置(如Program )。可以将组策略设置为不需要安全位置,但没有不需要签名的选项。

然而,一旦建立起来,它就非常强大。您将能够远程任何类型的窗口-任何完整性水平。没有空白的,没有反应的屏幕。无论正直程度如何,一切都会给人留下深刻印象。

对于tl;dr版本,下面是带有uiAccess=true选项的组装清单:

代码语言:javascript
运行
复制
<?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>
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18826248

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档