如果我调用函数WNetGetUniversalName()
从当前会话中映射的驱动器获取UNC路径,则该函数将成功。从模拟后的映射驱动器号获取UNC路径
但是......
- 如果我创建通过调用
LogonUser()
一个新的登录sesssion(登录用户是作为创造者的过程相同) - 模拟与登录用户通过调用函数
ImpersonateLoggedOnUser()
- 并再次调用
WNetGetUniversalName()
,该函数返回错误2250(ERROR_NOT_CONNECTED
)
的事情是I S应该将这个过程作为服务运行(在SYSTEM帐户中),因此我可能需要模拟用户以获取该用户的映射驱动器和关联的网络路径。正如我检查,信息不能跨用户会话访问。
Windows在哪里存储此信息,以便在用户重新登录时重新映射驱动器?我发现映射的网络路径历史记录保存在注册表下的关键字HKEY_USERS\<User SID>\Software\Microsoft\Windows\CurrentVersion\Explorer\Map Network Drive MRU
中,但它并不表示在用户登录时是否映射UNC路径以及关联的驱动器号。
请帮忙。
有没有一个地方Windows存储此信息,这取决于您的网络设置。 驱动器通常通过组策略或通过登录脚本进行映射。 – gnud 2011-04-27 08:26:12