【问题标题】:display application icon on UAC elevation prompt for application run from network share在从网络共享运行的应用程序的 UAC 提升提示上显示应用程序图标
【发布时间】:2009-01-22 16:43:25
【问题描述】:

我已使用应用程序清单配置了我的 .NET 应用程序以请求管理员权限。我还使用 signtool 对程序集进行了签名。一切正常——当您启动应用程序时,您会收到带有应用程序名称和签名证书名称的漂亮 UAC 提示。

但是,当我从网络共享运行应用程序时,提升提示会显示通用可执行图标,而不是我的应用程序图标。如何让 UAC 提示显示我的应用程序图标?

【问题讨论】:

    标签: .net windows-vista icons uac


    【解决方案1】:

    我可能发现了。

    UAC 在服务之上运行,我们看到的对话框在桌面快照之上。该服务只会显示对话框,就好像它在桌面上一样。

    正如我们所知,服务在 SYSTEM 帐户上运行(除其他外)。这意味着它需要 SYSTEM 对我们正在启动的可执行文件拥有权限。我只为自己分配了安全性(剥离了 SYSTEM)。

    一旦我授予 SYSTEM 权限(仅限读取权限!)并启动应用程序 - 它就会显示应用程序图标!

    【讨论】:

    • 此处相同:安装程序位于受保护的文件夹中,只有持续集成服务才能访问...
    【解决方案2】:

    会不会和问题有关:Why does my .NET application crash when run from a network drive?

    您的 .net 应用程序在网络共享上拥有除本地磁盘之外的其他权限。更新到 3.5 SP1 通常会消除此问题。否则,请检查 .net 的远程代码策略。

    您也可以尝试其他非 .net 应用程序(例如 procmon),该应用程序需要提升才能将其放在同一目录中,然后看看会发生什么。

    【讨论】:

    • 我确实必须将所有用户计算机修补到 3.5 SP1 才能让应用程序甚至从网络共享启动。我刚刚尝试了您的建议,从共享中运行 procmon,并且发生了同样的事情。通用图标。那么,这似乎是 Windows 的限制?
    • 这可能是 UAC 的一个特性,还是一个策略问题?我刚刚尝试过,确实,网络位置上的 UAC 不显示正常图标。
    【解决方案3】:

    显然这不是 .net 的东西,而是 UAC。

    我通过将 systinternals 中的 procmon 放置在网络共享上来重现该行为,并看到了相同的差异。

    当切换到使用另一个用户的提升会话时,可能与此有关。网络映射是在普通用户上完成的,所以在提升的会话中找不到应用程序,因此无法显示图标?

    您可以尝试执行以下操作以强制连接在提升的会话中有效:

    • 启动提升的命令提示符
    • 净使用\\your-network-location\share /user:<username> <password>
    • 现在转到开始->运行并启动\\your-network-location\share\procmon.exe(为了安全起见,请避免映射驱动器)并查看 UAC 提示是否有所改善?

    【讨论】:

    • 这个过程好像没什么区别。
    猜你喜欢
    • 1970-01-01
    • 2011-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-07
    • 2022-11-16
    • 1970-01-01
    相关资源
    最近更新 更多