11

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

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

4

3 回答 3

3

我大概发现了。

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

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

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

于 2011-05-23T18:14:46.713 回答
1

是否与以下问题有关:为什么我的 .NET 应用程序从网络驱动器运行时会崩溃?

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

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

于 2009-01-22T20:22:46.857 回答
1

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

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

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

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

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