Serviços e unidades redirecionadas

Um serviço (ou qualquer processo em execução em um contexto de segurança diferente) que deve acessar um recurso remoto deve usar o nome UNC (Convenção Universal de Nomenclatura) para acessar o recurso. O serviço deve ter privilégios apropriados para acessar o recurso. Se um serviço do lado do servidor usar uma conexão RPC, a delegação deverá ser habilitada no servidor remoto.

As letras da unidade não são globais para o sistema. Cada sessão de logon recebe seu próprio conjunto de letras de unidade de A a Z. Portanto, as unidades redirecionadas não podem ser compartilhadas entre processos em execução em contas de usuário diferentes. Além disso, um serviço (ou qualquer processo em execução em sua própria sessão de logon) não pode acessar as letras da unidade estabelecidas em uma sessão de logon diferente.

Um serviço não deve acessar diretamente recursos locais ou de rede por meio de letras de unidade mapeadas, nem deve chamar o comando net use para mapear letras da unidade em tempo de execução. O comando net use não é recomendado por vários motivos:

  • Os mapeamentos de unidade existem em contextos de logon, portanto, se um aplicativo estiver em execução no contexto da conta LocalService, qualquer outro serviço em execução nesse contexto poderá ter acesso à unidade mapeada.
  • Se o serviço fornecer credenciais explícitas para um comando net use , essas credenciais poderão ser compartilhadas inadvertidamente fora dos limites de serviço. Em vez disso, o serviço deve usar a representação do cliente para representar o usuário.
  • Vários serviços em execução no mesmo contexto podem interferir uns com os outros. Se ambos os serviços executarem um uso líquido explícito e fornecerem as mesmas credenciais ao mesmo tempo, um serviço falhará com um erro "já conectado".

Além disso, um serviço não deve usar as Funções de Rede do Windows para gerenciar letras de unidade mapeadas. Embora as funções WNet possam retornar com êxito, o comportamento resultante não é conforme o esperado. Quando o sistema estabelece uma unidade redirecionada, ela é armazenada por usuário. Somente o usuário é capaz de gerenciar a unidade redirecionada. O sistema controla as unidades redirecionadas com base no SID (identificador de segurança de logon) do usuário. O SID de logon é um identificador exclusivo para a sessão de logon do usuário. Um único usuário pode ter várias sessões de logon simultâneas no sistema.

Se um serviço estiver configurado para ser executado em uma conta de usuário, o sistema sempre criará uma nova sessão de logon para o usuário e iniciará o serviço nessa nova sessão de logon. Portanto, um serviço não pode gerenciar os mapeamentos de unidade estabelecidos em outras sessões do usuário.

Windows Server 2003: Em um computador que tem vários adaptadores de rede (ou seja, um computador multihomed), podem ocorrer atrasos de até 60 segundos ao usar caminhos UNC para acessar arquivos armazenados em um servidor SMB (bloco de mensagens de servidor remoto).