服务和重定向的驱动器

服务 (或必须在其他安全上下文) 中运行的任何进程(必须访问远程资源)应使用通用命名约定 (UNC) 名称来访问资源。 服务必须具有相应的权限才能访问资源。 如果服务器端服务使用 RPC 连接,则必须在远程服务器上启用委派。

驱动器号对系统不是全局的。 每个登录会话接收其自己的一组从 A 到 Z 的驱动器号。因此,重定向的驱动器不能在不同的用户帐户下运行的进程之间共享。 此外,服务 (或在其自己的登录会话中运行的任何进程) 无法访问在不同登录会话中建立的驱动器号。

服务不应通过映射的驱动器号直接访问本地或网络资源,也不应调用 net use 命令在运行时映射驱动器号。 出于以下几个原因,不建议使用 net use 命令:

  • 驱动器映射存在于登录上下文中,因此,如果应用程序在 LocalService 帐户的上下文中运行,则该上下文中运行的任何其他服务可能有权访问映射的驱动器。
  • 如果服务向 net use 命令提供显式凭据,则可能会在服务边界之外无意中共享这些凭据。 相反,服务应使用 客户端模拟 来模拟用户。
  • 在同一上下文中运行的多个服务可能会相互干扰。 如果两个服务执行显式 网络使用 并同时提供相同的凭据,则一个服务将失败并出现“已连接”错误。

此外,服务不应使用 Windows 网络函数 来管理映射的驱动器号。 尽管 WNet 函数可能会成功返回,但生成的行为不符合预期。 当系统建立重定向的驱动器时,该驱动器将按用户存储。 只有用户能够管理重定向的驱动器。 系统根据用户的登录安全标识符 (SID) 跟踪重定向的驱动器。 登录 SID 是用户登录会话的唯一标识符。 单个用户可以在系统上具有多个同时登录会话。

如果将服务配置为在用户帐户下运行,则系统始终为用户创建新的登录会话,并在该新登录会话中启动该服务。 因此,服务无法管理在用户的其他会话中建立的驱动器映射。

Windows Server 2003: 在使用 UNC 路径访问存储在远程服务器消息块 (SMB) 服务器上存储的文件时,在具有多个网络接口 ((即多宿主计算机) )的计算机上,可能会出现长达 60 秒的延迟。