标题说明了一切。
用户将驱动器号映射L:
到共享\\server\share
。然后用户能够L:
从命令行进行访问,并且用户从命令行或资源管理器启动的任何程序都可以执行相同的操作。
然而,在同一个用户下运行的服务L:
根本看不到驱动器号。从命令行手动运行的相同服务程序却可以。
显然,这两种情况存在差异,但我找不到有关它的任何文档,也找不到让L:
服务可以访问驱动器号的方法。
有什么帮助吗?
答案1
映射驱动器与登录会话绑定。即使服务在同一个用户帐户下运行,也不会在“物理”会话中运行。
如果您希望服务具有映射驱动器,则服务必须映射驱动器本身。这可以直接使用WNetAddConnection2
Win32 API 或使用类似 的工具来实现net.exe
。另请注意,“持久”映射驱动器不适用于非交互式会话。
我建议根本不要使用映射驱动器。而是直接访问共享。