我正在编写一个应用程序,这是一种自定义的企业设置。 这个应用程序执行了很多任务,其中一些需要提升。
我添加了一个清单,以便当应用启动时,UAC会要求用户提升。
其中一项任务是将某些网络驱动器(带WNetAddConnection
)映射到远程服务器。
这些映射应该是持久的。
到目前为止一切都那么好,除了应用程序关闭时,用户无法看到应用程序刚刚映射的驱动器。
经过一些研究(https://serverfault.com/a/185885/147818)后,我了解到当用户登录时,会话会收到2个令牌,一个具有低权限,另一个具有完全权限,另一个用于在提升时运行进程是必需的。
我的问题:我的应用程序是否可能启动一个获取当前用户过滤令牌的线程,当应用程序的任务完成时,用户可以在资源管理器中看到网络驱动器?
是否可以使用此令牌模拟线程?
我知道这些可行的解决方法:
EnableLinkedConnections
设置调整注册表(需要用户重启会话)但由于某些原因,这些解决方案都不是一种选择。
非常感谢任何帮助
答案 0 :(得分:2)
从我们提升的安装程序映射驱动器时遇到了同样的问题。
我们处理此问题的方式是首先映射安装程序中的驱动器,该驱动程序当然在提升 UAC状态下运行。安装程序最后做的是创建一个文本文件,列出驱动器号及其映射的网络驱动器。然后我们运行第二个程序 non-elevated ,为用户执行映射。这些映射是持久的。
这对我们来说在全球范围内为客户的机器安装了数千个。