Version tl;dr : Assurez-vous que vous n'essayez pas d'ouvrir un fichier marqué dans le système de fichiers comme étant en lecture seule en mode lecture/écriture.
J'ai rencontré cette erreur lors de mes voyages en essayant de lire un fichier XML. J'ai constaté que dans certaines circonstances (détaillées ci-dessous), cette erreur était générée pour un fichier même si le chemin d'accès et le nom du fichier sont corrects.
Détails du dossier :
- Le chemin et le nom du fichier sont valides, le fichier existe.
- Le compte de service et l'utilisateur connecté ont tous deux des droits de contrôle total sur le fichier et le chemin d'accès complet.
- Le fichier est marqué comme étant en lecture seule
- Il fonctionne sur Windows Server 2008 R2
- Le chemin d'accès au fichier utilisait les lettres du lecteur local, et non le chemin UNC.
En essayant de lire le fichier de manière programmatique, le comportement suivant a été observé en exécutant exactement le même code :
- Lorsqu'il est exécuté en tant qu'utilisateur connecté, le fichier est lu sans erreur.
- Lorsqu'il est exécuté en tant que compte de service, la tentative de lecture du fichier génère l'erreur Access Is Denied (accès refusé) sans aucun détail.
Pour résoudre ce problème, j'ai dû modifier l'appel de la méthode par défaut (Ouverture en tant que RW) pour ouvrir le fichier en tant que RO. Une fois ce changement effectué, l'erreur a cessé de se produire.