"L'accès au chemin ... est refusé" (.NET C #)
J'ai été l'enregistrement d'un petit fichier de données XML à un disque dur externe, pas de probs. Mais ensuite, j'ai essayé d'utiliser le ApplicationData dossier et les autres, même C:\, mais pas de chance. J'obtiens une erreur du type "Accès au chemin "C:\" refusé".
Juste pour confirmer, le fichier est créé et lu bien avec le code actuel, sur un disque externe. Je suppose que c'est quelque chose à voir avec la sécurité & les autorisations, mais je n'ai pas trouvé quelque chose de trop utile.
Merci d'avance si vous pouvez me diriger dans la bonne direction!
string fipData = @"F:\IL2\SIIYM\SIIYM Data.xml"; // external drive ok :-)
//string fipData = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
//string fipData = @"C:\";
// if the XML data file doesn't exist, create it
bool dataFileExists = File.Exists(fipData);
if (dataFileExists)
{
// read the XML values
XDocument xData = XDocument.Load(fipData);
//...
}
else
{
// create & save the XML data file
XElement xLastPath = new XElement(el_lastPath, "");
XElement xLastCode = new XElement(el_lastCode, "");
XElement xRoot = new XElement(el_root);
xRoot.Add(xLastPath);
xRoot.Add(xLastCode);
XDocument newDataFile = new XDocument();
newDataFile.Add(xRoot);
try
{
newDataFile.Save(fipData);
}
catch (Exception ex)
{
MessageBox.Show("Data file unable to be created. System message:{0}".Put(Environment.NewLine + Environment.NewLine + ex.Message));
}
}
source d'informationauteur MrGreggles
Vous devez vous connecter pour publier un commentaire.
Dans les commentaires d'une autre réponse vous dire que c'est une application de bureau, donc permet de traiter chaque emplacement séparément.
Sous Vista et au-delà, un utilisateur ordinaire ne possède pas les droits pour créer des fichiers dans le répertoire racine du disque système (généralement C:). Vous pouvez constater vous-même en ouverture de C:\ dans l'explorateur, clic droit et en essayant de créer un fichier, vous devez obtenir une invite UAC. Donc, si vous voulez écrire sur C:\, puis votre application doit s'exécuter en tant qu'administrateur, via un adapté manifeste exigeants élévation, ou par le démarrage d'un processus distinct lorsque vous souhaitez écrire à cet emplacement.
Données De L'Application, De L'Environnement.SpecialFolder.ApplicationData convient cependant de travail. Si vous de la sortie du repertoire qui renvoie ce que vous obtenez?
Je peux seulement imaginer que l'application doit être en cours d'exécution dans le contexte d'un utilisateur qui n'a pas accès au disque local, par exemple un ASP.NET le site web fonctionnant sous l'anonyme IIS compte ou un compte de service qui n'a accès pour le réseau concerné endroits.
Probablement le disque dur externe est formaté en FAT. FAT ne prend pas en charge la gestion des droits pour les utilisateurs, afin de gagner, il est ok.
D'ailleurs que l'IIS Utilisateur n'a aucun droit pour les autres dossiers, comme Adam déjà mentionné