ti-enxame.com

O Serviço Windows não pode acessar o compartilhamento de rede

Eu tenho um serviço do Windows em execução na minha máquina local. Ele está configurado para ser executado sob NT AUTHORITY\NETWORK SERVICE. O programa acessa uma unidade compartilhada de rede em um computador na mesma sub-rede. Esse diretório compartilhado tem Todos definido como Controle total.

Estou recebendo Falso em File.Exists, mas o arquivo existe. Estou certo de que este é um problema de permissão. Estou esquecendo alguma coisa? Observe que o computador com a unidade compartilhada não está em um domínio.

17
Brian T

A solução foi encontrada aqui: https://serverfault.com/questions/177139/windows-service-cant-access-network-share

O fato de a máquina com a unidade compartilhada não estar em um domínio é onde está o seu principal problema. Para que isso funcione, você precisará configurar o Serviço Windows para executar como um usuário específico e, em seguida, criar um usuário idêntico no sistema remoto com a mesma senha. Pode funcionar então.

O problema decorre do fato de que, para fazer login em uma máquina que não esteja em um domínio, você precisa fazer login nessa máquina usando uma conta existente nessa máquina. A conta da máquina para outra coisa definitivamente não existirá nessa máquina local. Ao criar um usuário idêntico com uma senha idêntica, você poderá fazer o logon funcionar ".

-sysadmin1138

Criei contas idênticas em ambas as máquinas e a conta de serviço conseguiu acessar a unidade compartilhada. Ter os servidores no mesmo domínio é uma solução melhor, por isso estou trabalhando nisso, mas isso funcionará nesse meio tempo.

22
Brian T

Brian T estava correto. Mas eu gostaria de adicionar algo. Tivemos esse problema mesmo que o serviço estivesse sendo executado no mesmo DOMÍNIO\Usuário. Nosso serviço estava tentando gravar um arquivo em uma pasta/unidade compartilhada e foi configurado no config.xml da seguinte maneira: I:/path/to/the/file/to/write.

Mas quando alteramos a configuração para usar o endereço IP da rede em vez da letra da unidade, conseguimos corrigir o problema. No entanto, a sintaxe mudou um pouco:

\\ xxx.xxx.xx.xx\path\to\the\folder\to\write

Espero que isso ajude quem ainda não resolveu o problema

7
theManag3R

Definir as permissões de compartilhamento não é suficiente. Também defina as permissões NTFS adequadamente, para que funcione. Todos O controle total sobre o compartilhamento significa que todos podem passar pela rede até a raiz do compartilhamento, mas a partir de então os direitos NTFS são usados ​​para determinar o que é permitido e o que não é.

2
jdehaan