Como acessar o diretório mapeado de um serviço do windows

3

Como regra geral, os serviços do Windows não podem acessar unidades mapeadas e, em vez disso, é necessário usar caminhos UNC.

Estou convencido de que há uma maneira de contornar isso para que um serviço do Windows possa acessar uma unidade mapeada, mas não consigo encontrá-la em lugar algum.

Meu caso específico é que estou executando o Tomcat7 em um servidor Windows 2008.

    
por Edd 25.09.2013 / 10:41

2 respostas

7

Uma alternativa ao uso de diretórios mapeados ou caminhos UNC é usar links simbólicos.

Links simbólicos NTFS (links simbólicos) podem se referir a um caminho UNC, mas diferem dos atalhos em que não há redirecionamento para o local solicitado. Se você criar um symlink como o seguinte ...

mklink /D C:\myLink \127.0.0.1\c$

... quando você abrir C:\myLink , o endereço da pasta em que você está será C:\myLink e não \127.0.0.1\c$ , que é o que você obteria se myLink fosse um atalho e não um link simbólico. Isso é significativo se seu aplicativo tiver problemas de compatibilidade com caminhos UNC.

Além disso, o link simbólico existe no sistema de arquivos e não precisa ser recriado após o logon, como requer sua unidade mapeada média (geralmente automatizada) e, portanto, está disponível para serviços do Windows.

    
por 27.09.2013 / 11:36
1

Encontrei uma solução para esse problema que parece estar funcionando bem: link

Passos que tomei:

  1. Crie um arquivo bat que contenha o comando net use z: \servername\sharedfolder /persistent:yes
  2. Criar uma tarefa agendada
    • Definir usuário como "Sistema"
    • Adicione uma ação para executar o arquivo bat
  3. Executar manualmente a tarefa (não é necessário definir um agendamento)

Observação: a unidade aparecerá como " Unidade de rede desconectada (Z:) ", mas ainda estará acessível a todos os usuários conectados e também aos serviços do Windows

    
por 25.09.2013 / 12:40