Lors de l'appel File.OpenRead()
sur un fichier sur un partage réseau où existe un dossier avec le même nom (mais le boîtier différent), UnauthorizedAccessException
. Cela peut arriver sur les partages Linux où le boîtier est important.File.OpenRead() throws UnauthorizedAccessException lorsqu'un répertoire avec le même chemin existe
Exemple: * P: est mis en correspondance \ somemachine \ someshare * P: \ files \ est un dossier * P: \ files \ sortie est un fichier * P: \ fichiers \ output est un dossier
le code suivant lancer:
const string path = @"P:\files\OUTPUT";
DirectoryInfo dir = new DirectoryInfo(Path.GetDirectoryName(path));
FileInfo file = dir.EnumerateFiles().FirstOrDefault(x => string.Equals(Path.GetFileName(path), x.Name));
// All of the below throws UnauthorizedAccessException
file.OpenRead();
FileStream stream = new FileStream(file.FullName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
File.OpenRead(path);
Est-il possible que je peux ouvrir le boîtier de fichier sensible? Ce n'est pas une option pour renommer le fichier ou déplacer le dossier car il s'agit d'un partage en lecture seule.
Cela ressemble plus à une question d'administration - c'est ainsi que SMB prend en charge les clients insensibles à la casse comme Windows. Cochez [this] (http://superuser.com/questions/431342/linux-both-case-sensitive-and-case-insensitive-and-always-inconvenient) question dans le superutilisateur. Pour Windows et SMB 'P: \ files \ OUTPUT' et' p: \ files \ output' sont les mêmes –