J'ai un service Windows en cours d'exécution sur ma machine locale. Il est configuré pour s'exécuter sous NT AUTHORITY\NETWORK SERVICE. Le programme accède à un lecteur partagé en réseau sur un ordinateur du même sous-réseau. Ce répertoire partagé a Tout le monde défini sur Contrôle total.
J'obtiens False sur File.Exists, mais le fichier existe. Je suis certain que c'est un problème d'autorisation. Suis-je en train d'oublier quelque chose? Remarque, l'ordinateur avec le lecteur partagé n'est pas sur un domaine.
La solution a été trouvée ici: https://serverfault.com/questions/177139/windows-service-cant-access-network-share
Le fait que la machine avec le lecteur partagé ne se trouve pas sur un domaine est votre principal problème. Pour que cela fonctionne, vous devrez configurer le service Windows pour qu'il s'exécute en tant qu'utilisateur spécifique, puis vous devrez créer un utilisateur identique sur le système distant avec le même mot de passe. Cela pourrait fonctionner alors.
Le problème vient du fait que pour vous connecter à une machine qui n'est pas dans un domaine, vous devez vous connecter à cette machine en utilisant un compte qui existe sur cette machine. Le compte de la machine pour quelque chose d'autre n'existera certainement pas sur cette machine locale. En créant un utilisateur identique avec un mot de passe identique, vous pourrez peut-être faire fonctionner la connexion. "
-sysadmin1138
J'ai créé des comptes identiques sur les deux machines et le compte de service a pu accéder au lecteur partagé. Avoir les serveurs sur le même domaine est une meilleure solution, donc j'y travaille, mais cela fonctionnera en attendant.
Brian T avait raison. Mais je voudrais ajouter quelque chose. Nous avons rencontré ce problème même si le service s'exécutait sur le même DOMAIN\User. Notre service essayait d'écrire un fichier dans un dossier/lecteur partagé et il était configuré dans le fichier config.xml comme suit: I:/chemin/vers/le/fichier/vers/écrire.
Mais lorsque nous avons modifié la configuration pour utiliser l'adresse IP du réseau au lieu de la lettre de lecteur, nous avons réussi à résoudre le problème. Cependant la syntaxe a un peu changé:
\\ xxx.xxx.xx.xx\path\to\the\folder\to\write
J'espère que cela aide toute personne qui n'a toujours pas résolu le problème
La définition des autorisations de partage ne suffit pas. Définissez également les autorisations NTFS correctement, cela fonctionnera. Tout le monde dispose d'un contrôle total sur le partage, tout le monde peut accéder à la racine du partage via le réseau, mais à partir de là, les droits NTFS sont utilisés pour déterminer ce qui est autorisé ou non.