【发布时间】:2015-03-19 05:10:01
【问题描述】:
我正在编写一个属于自定义公司设置的应用程序。 这个应用程序做了很多任务,其中一些需要提升。
我包含了一个清单,以便在应用启动时 UAC 要求用户提升权限。
其中一项任务是将一些网络驱动器(使用WNetAddConnection)映射到远程服务器。
这些映射应该是持久的。
到目前为止一切顺利,除了当应用关闭时,用户看不到应用刚刚映射的驱动器。
经过一番研究(https://serverfault.com/a/185885/147818),我了解到当用户登录时,它的会话收到 2 个令牌,一个具有低权限,另一个具有完全权限,用于在需要提升时运行进程.
我的问题:我的应用程序是否有可能启动一个线程来获取当前用户过滤的令牌,当应用程序的任务完成时,用户可以在资源管理器中看到网络驱动器?
是否可以使用此令牌模拟线程?
我知道这些可能的解决方法:
- 重新设计应用程序,以便仅将需要提升的某些特定任务封装在 COM 对象中。
- 使用
EnableLinkedConnections设置调整注册表(需要重新启动用户的会话)
但由于某些原因,这些解决方案都不是一种选择。
任何帮助将不胜感激
【问题讨论】:
-
您拒绝的第一个所谓的解决方法看起来不像解决方法。这看起来就像你应该做的那样。
-
我知道,但你能回答我的问题吗?
-
而且你不需要 COM。你只需要两个过程。一个升高,另一个不升高。
标签: windows winapi uac local-security-authority