如果我调用函数WNetGetUniversalName()
从当前会话中映射的驱动器获取UNC路径,则该函数成功。
但是...
LogonUser()
创建新的登录站点(登录用户与流程创建者相同)ImpersonateLoggedOnUser()
函数WNetGetUniversalName()
,函数返回错误2250(ERROR_NOT_CONNECTED
)问题是我应该将此进程作为服务运行(在SYSTEM帐户中),因此我可能需要模拟用户获取该用户和相关网络路径的映射驱动器。在我检查时,无法跨用户会话访问信息。
Windows在哪里存储此信息,以便在用户登录时可以重新映射驱动器?我发现映射的网络路径历史记录保存在密钥:HKEY_USERS\<User SID>\Software\Microsoft\Windows\CurrentVersion\Explorer\Map Network Drive MRU
下的注册表中,但是它没有说明当用户将返回以及相关的驱动器号时是否将映射UNC路径。
请帮忙。
答案 0 :(得分:0)
如果我没记错的话,我相信这些驱动器映射存储在登录会话中。由于LogonUser()创建了一个新的登录会话,因此它没有驱动器映射;您必须将ImpersonateLoggedOnUser()与现有令牌一起使用。