69 votes

Erreur d'accès au chemin refusé en C#

J'ai lu un message similaire, mais je n'arrive pas à comprendre le problème.

J'ai modifié les autorisations de Windows et changé de route.

Lorsque j'essaie d'enregistrer un fichier, l'exception suivante se produit :

L'accès au chemin **** est refusé.

string route="D:\\";
FileStream fs = new FileStream(route, FileMode.Create); <--here is the problem
        StreamWriter write = new StreamWriter(fs);
        patient person = new patient();
        patient.name = textBox1.Text;
        patient.name2 = textBox2.Text;

166voto

Alan Points 3381

Vous essayez de créer un objet FileStream pour un répertoire (dossier). Spécifiez un nom de fichier (par exemple, @ " D:\test.txt ") et l'erreur disparaîtra.

À propos, je vous suggère d'utiliser le constructeur StreamWriter qui prend un encodage comme deuxième paramètre, car sinon vous pourriez avoir une mauvaise surprise en essayant de lire le fichier enregistré plus tard (en utilisant StreamReader).

15voto

renatoargh Points 3805

Avez-vous essayé de spécifier un nom de fichier ?

eg :

string route="D:\\somefilename.txt";

12voto

Taegost Points 206

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.

4voto

Tommy Beaton Points 31

J'ai eu ce problème pendant plus longtemps que je ne voudrais l'admettre.

J'avais simplement besoin de lancer VS en tant qu'administrateur, erreur de débutant de ma part...

J'espère que cela aidera quelqu'un <3

1voto

chennaiah.P Points 9

Vous n'avez pas les autorisations nécessaires pour accéder au fichier. Veuillez vérifier si vous pouvez accéder au fichier sur ce lecteur.

string route= @"E:\Sample.text";
FileStream fs = new FileStream(route, FileMode.Create);

Vous devez fournir le nom du fichier à créer. Veuillez essayer ceci, maintenant vous pouvez créer.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X