通过模拟访问映射的网络驱动器

access mapped network drive through impersonation

本文关键字:网络 驱动器 映射 访问 模拟      更新时间:2023-10-16

使用ImpersonateLoggedOnUserWindows API模拟当前用户后,是否无法从服务访问映射的网络驱动器(在用户会话中映射)?

是的,这是不可能的。驱动器映射仅在交互式登录期间建立。ImpersonateLoggedOnUser函数不模拟用户的整个登录会话,只模拟用户的安全上下文。这只是使用模拟无法完成的许多事情之一。

我想您可能能够通过复制用户的登录令牌(从他们的一个交互进程中获得),然后使用它来调用CreateProcessAsUser函数来实现这一点。然后,您将启动一个进程,该进程将使用映射的网络驱动器。我不完全确定这是否可行,因为我从来没有这样做过,但理论上似乎是可能的。

当然,这就引出了一个问题,为什么你需要走这样一条迂回的路线。作为一个标准的Windows应用程序,一开始只在用户的交互过程中运行代码会非常明智。

这不是服务的目的。服务不支持映射的网络驱动器。如果您想从服务中访问网络资源,您应该只使用UNC路径。