如果我调用函数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 路径以及相关的驱动器号。
请帮忙。