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

时间:2016-06-02 09:37:27

标签: c++ windows winapi

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

1 个答案:

答案 0 :(得分:2)

是的,这是不可能的。仅在交互式登录期间建立驱动器映射。 ImpersonateLoggedOnUser函数不会模拟用户的整个登录会话,只会模拟其安全上下文。这只是使用模拟无法完成的one of the many things

我认为您可能能够通过复制用户的登录令牌(从其中一个交互式进程获取),然后使用它来调用CreateProcessAsUser函数来完成此操作。然后,您将启动一个可以使用映射的网络驱动器的进程。我不是绝对肯定这会起作用,因为我从来没有这样做过,但理论上似乎有可能。

当然,它引出了为什么你需要遵循这样一条迂回路线的问题。作为标准的Windows应用程序,首先在用户的交互式过程中运行代码是非常明智的。

这不是服务旨在做的事情。服务不支持映射的网络驱动器。如果要从服务中访问网络资源,则应使用UNC路径。