12
votes

"L'accès au chemin ... est refusé" (.net c #)

Je sauve un petit fichier de données XML sur un lecteur externe, aucun problème. Mais ensuite j'ai essayé d'utiliser le dossier ApplicationData et d'autres, même c: \ mais pas de chance. Je reçois une erreur comme "l'accès au chemin" C: "refusé".

Juste pour confirmer, le fichier est créé et lut correctement avec le code actuel, sur un lecteur externe. Je suppose que c'est quelque chose à voir avec la sécurité et les autorisations, mais je n'ai rien trouvé trop utile.

Merci d'avance si vous pouvez me pointer dans la bonne direction de celui-ci! xxx


3 commentaires

Umm ... Je ne sais pas pourquoi, mais pour me réveiller ce matin, cela fonctionne pour ApplicationData. Ce serait bien de savoir pourquoi. J'ai eu un problème lorsque vous avez changé de débogage à la libération de la construction. Je peux seulement supposer que cela était lié à cela. Merci tout pour vos pensées!


Les déclarations "FIPDATA" commentés dans votre exemple de code ne spécifient pas réellement de nom de fichier - juste des chemins. Est-ce une faute de frappe?


Blush Matt, cela peut avoir été la cause. Longue journée, cerveau zap. Merci tous les gars pour vos idées!


3 Réponses :


2
votes

Je ne peux que l'imaginer que l'application doit être exécutée dans le contexte d'un utilisateur qui n'a pas accès au lecteur local, par exemple. Un site Web ASP.NET fonctionnant sous le compte IIS anonyme ou un compte de service qui n'a accès qu'aux emplacements réseau correspondants.


1 commentaires

Oups, le contexte ici est: * My PC PC PC * Windows 7 * L'application de bureau est-ce que mes paramètres de l'UAC (par défaut) sont trop élevés peut-être? Comment puis-je savoir si cela fonctionnera sur l'ordinateur d'une autre personne?



1
votes

Très probablement, le lecteur externe est formé de graisse. La graisse ne supporte pas la gestion des droits des utilisateurs, ce qui permet de sauvegarder qu'il y a OK.

En outre que l'utilisateur IIS n'a aucun droit aux autres dossiers comme Adam mentionné déjà


0 commentaires

11
votes

Dans les commentaires à une autre réponse, vous dites qu'il s'agit d'une application de bureau, alors permet de traiter chaque emplacement séparément.

sous Vista et au-delà, un utilisateur ordinaire n'a pas de droit de créer des fichiers dans le répertoire racine du lecteur système (généralement C :). Vous pouvez voir cela par vous-même en ouvrant C: \ dans Explorer, en cliquant avec le bouton droit de la souris et en essayant de créer un fichier - vous devez obtenir une invite de l'UAC. Donc, si vous voulez écrire sur C: \ Ensuite, votre application doit être exécutée en tant qu'administrateur, via une élévation exigeante manifeste appropriée, ou en démarrant un processus distinct lorsque vous souhaitez écrire à cet emplacement.

Données d'application, Environnement.Specialfolder.ApplicationData doit cependant fonctionner. Si vous publiez le répertoire réel qui renvoie ce que vous obtenez?


2 commentaires

Merci pour la réponse! Environnement.Specialfolder.ApplicationData: C: \ Users \ Mrgggles \ Appdata \ Roaming \ SIIYM DATA.XML


Je reçois une erreur refusée par l'accès à l'aide de l'environnement.Specialfolder ...