0

我正在编写一个应用程序,它是一种自定义公司设置。这个应用程序做了很多任务,其中一些需要提升。

我包含了一个清单,以便当应用程序启动时 UAC 要求用户提升。

其中一项任务是将一些网络驱动器(带有WNetAddConnection)映射到远程服务器。这些映射应该是持久的。到目前为止一切顺利,除了当应用程序关闭时,用户看不到应用程序刚刚映射的驱动器。

经过一番研究(https://serverfault.com/a/185885/147818),我了解到当用户登录时,它的会话收到 2 个令牌,一个具有低权限,另一个具有完全权限,使用的那个在需要提升时运行进程。

我的问题:我的应用程序是否有可能启动一个线程来获取当前用户过滤的令牌,当应用程序的任务完成时,用户可以在资源管理器中看到网络驱动器?

可以用这个令牌模拟线程吗?

我知道这些可能的解决方法:

  • 重新设计应用程序,以便仅将一些需要提升的特定任务封装在 COM 对象中。
  • 使用设置调整注册表EnableLinkedConnections(需要用户的会话重新启动)

但由于某些原因,这些解决方案都不是一种选择。

任何帮助将不胜感激

4

1 回答 1

2

从提升的安装程序映射驱动器时,我们遇到了同样的问题。

我们处理这个问题的方法是,我们首先从安装程序映射驱动器,该安装程序当然在提升的UAC 状态下运行。安装程序所做的最后一件事是创建一个文本文件,其中列出了驱动器号及其映射的网络驱动器。然后我们运行第二个非提升程序,为用户进行映射。这些映射是持久的。

这已经为我们在全球客户机器上进行了数千次安装。

于 2012-11-30T21:25:52.643 回答