我已使用应用程序清单配置我的.NET应用程序以请求管理员权限。我还使用signtool签署了程序集。一切都很好 - 当你启动应用程序时,你会得到一个漂亮的UAC提示,其中包含应用程序的名称和签名证书的名称。
但是,当我从网络共享运行应用程序时,提升提示会显示通用可执行图标,而不是我的应用程序图标。如何让UAC提示显示我的应用程序的图标?
答案 0 :(得分:3)
我可能已经发现了。
UAC运行在服务之上,我们看到的对话框位于桌面快照之上。该服务只会显示对话框,就像它在桌面上一样。
我们知道服务在SYSTEM帐户上运行(在其他几个帐户中)。这意味着它需要SYSTEM才能拥有我们正在启动的可执行文件的权限。我只为自己安排了安检(剥离了SYSTEM)。
一旦我授予SYSTEM权限(只读权限!),并启动了应用程序 - 它就会显示应用程序图标!
答案 1 :(得分:1)
是否与问题有关:Why does my .NET application crash when run from a network drive?
您的.net应用程序对网络共享具有与本地磁盘相同的其他权限。更新到3.5 SP1通常会删除此问题。否则,请检查.net。
的远程代码策略此外,你可以尝试其他非.net应用程序(例如procmon),它需要提升才能将它放在同一个目录中,看看会发生什么。
答案 2 :(得分:1)
显然它不是.net的东西,而是UAC。
我通过将systinternals的procmon放在网络共享上来重现这种行为,并看到了相同的区别。
当切换到提升的会话时,可能会有一些事情要做,而另一个用户则被使用。网络映射是在普通用户上完成的,因此在提升的会话中找不到应用程序,因此无法显示图标?
您可以尝试执行以下操作以强制连接在提升的会话中有效:
\\your-network-location\share /user:<username> <password>
\\your-network-location\share\procmon.exe
(为安全起见避免映射驱动器)并查看UAC提示是否有所改进?