Jun 28, 2012

Windows Service Acessando Unidade de Rede

Estava com o seguinte problema:

Um serviço windows que desenvolvemos precisava acessar uma pasta localizada em uma unidade de rede, o que não estava acontecendo, mesmo passando a unidade na configuração.

Depois de alguns testes e pesquisa cheguei à seguinte conclusão.
O problema estava na forma que o drive é acessado.

É o seguinte:
O drive mapeado é específico por usuário e o serviço, por padrão , utiliza outro usuário para rodar/executar (local system), não o que está logado.

Isso quer dizer que o usuário do serviço nã conhece o driver, por exemplo "Z:", então, pesquisando, encontrei as seguintes soluções:

1ª) Mais fácil, mas que não consegui fazer funcionar:
Alterar o logon do serviço para um usuário que tenha o "Z:" mapeado corretamente, simples, não? Pena que não funcionou comigo. Mas, pode-se tentar, facinho de fazer e teve gente que falou que funciona.

2ª) que funcionou lol, Passos:
1: Parar o serviço
2: Baixar este programa: http://technet.microsoft.com/en-us/sysinternals/bb842062.aspx (utilzado para executar o cmd.exe com o usuário local system)
3: Executar o cmd.exe como administrador
4: Executar o comando "psexec -i -s cmd.exe" (abre o cmd.exe como o usuário local system)
5: Abrirá uma nova tela do cmd.exe
5: Para ter certeza que o usuário é o local system, execute o comando "whoami". O retorno deve ser "nt authority\system"
6: Agora que você sabe que o usuário é o mesmo do serviço, execute o comando de mapear unidade a partir do prompt "net use" (a sintaxe é : net use\\\/persistent:yes . Exemplo: "net use Z: \\srvdesenv-05\Teste /persistent:yes
7:Vai perdir o usuário, você coloca
8: Vai pedir senha, você coloca
9:Inicie o Serviço

Basicamente é isso ae... mas podem existir outras variáveis, principalmente de permissão.

Referências:
http://stackoverflow.com/questions/182750/how-to-map-a-network-drive-to-be-used-by-a-service

http://serverfault.com/questions/91797/windows7-the-specified-network-password-is-not-correct-when-the-password-is

Abraços
Rafael Campana

No comments:

Post a Comment