서비스 및 리디렉션된 드라이브

원격 리소스에 액세스해야 하는 서비스(또는 다른 보안 컨텍스트에서 실행되는 프로세스)는 UNC(범용 명명 규칙) 이름을 사용하여 리소스에 액세스해야 합니다. 리소스에 액세스하려면 서비스에 적절한 권한이 있어야 합니다. 서버 쪽 서비스에서 RPC 연결을 사용하는 경우 원격 서버에서 위임을 사용하도록 설정해야 합니다.

드라이브 문자는 시스템에 전역적이지 않습니다. 각 로그온 세션은 자체 드라이브 문자 집합을 A에서 Z로 받습니다. 따라서 리디렉션된 드라이브는 다른 사용자 계정으로 실행되는 프로세스 간에 공유할 수 없습니다. 또한 서비스(또는 자체 로그온 세션 내에서 실행되는 모든 프로세스)는 다른 로그온 세션 내에서 설정된 드라이브 문자에 액세스할 수 없습니다.

서비스는 매핑된 드라이브 문자를 통해 로컬 또는 네트워크 리소스에 직접 액세스해서는 안 되며 런타임에 드라이브 문자를 매핑하기 위해 net use 명령을 호출해서는 안 됩니다. 다음과 같은 몇 가지 이유로 net use 명령을 사용하지 않는 것이 좋습니다.

  • 드라이브 매핑은 로그온 컨텍스트 간에 존재하므로 애플리케이션이 LocalService 계정의 컨텍스트에서 실행 중인 경우 해당 컨텍스트에서 실행되는 다른 서비스는 매핑된 드라이브에 액세스할 수 있습니다.
  • 서비스가 net use 명령에 명시적 자격 증명을 제공하는 경우 해당 자격 증명이 실수로 서비스 경계 외부에서 공유될 수 있습니다. 대신 서비스는 클라이언트 가장을 사용하여 사용자를 가장해야 합니다.
  • 동일한 컨텍스트에서 실행되는 여러 서비스가 서로 간섭할 수 있습니다. 두 서비스 모두 명시적 순 사용을 수행하고 동시에 동일한 자격 증명을 제공하는 경우 "이미 연결된" 오류와 함께 하나의 서비스가 실패합니다.

또한 서비스는 Windows 네트워킹 함수를 사용하여 매핑된 드라이브 문자를 관리해서는 안 됩니다. WNet 함수가 성공적으로 반환될 수 있지만 결과 동작은 의도한 대로 반환되지 않습니다. 시스템이 리디렉션된 드라이브를 설정하면 사용자 단위로 저장됩니다. 사용자만 리디렉션된 드라이브를 관리할 수 있습니다. 시스템은 사용자의 SID(로그온 보안 식별자)를 기반으로 리디렉션된 드라이브를 추적합니다. 로그온 SID는 사용자의 로그온 세션에 대한 고유 식별자입니다. 단일 사용자는 시스템에 여러 동시 로그온 세션을 가질 수 있습니다.

서비스가 사용자 계정으로 실행되도록 구성된 경우 시스템은 항상 사용자에 대한 새 로그온 세션을 만들고 해당 새 로그온 세션에서 서비스를 시작합니다. 따라서 서비스는 사용자의 다른 세션 내에 설정된 드라이브 매핑을 관리할 수 없습니다.

Windows Server 2003: 여러 네트워크 인터페이스(즉, 다중 호스트 컴퓨터)가 있는 컴퓨터에서는 UNC 경로를 사용하여 SMB(원격 서버 메시지 블록) 서버에 저장된 파일에 액세스할 때 최대 60초의 지연이 발생할 수 있습니다.