Внутреннее приложение в нашей компании требует, чтобы файлы aa, bb ... zz в папке X были прочитаны при запуске. Когда я (как кто-то с доступом FullControl к папке X) запустил приложение, все будет хорошо. Когда какой-либо из моих коллег (которые имеют доступ только для чтения к папке X) запускают приложение, они получают исключение «Доступ запрещен к файлу aa ...».Приложение не может получить файл, хотя я могу его скопировать с помощью проводника
файлы считываются с помощью следующей рутинного
public static void readFromBinaryFile(this QIHasFileIo xThis, string xFilePath)
{
if (!System.IO.File.Exists(xFilePath))
throw new System.Exception("File to read " + xFilePath + " does not exist ... ");
if (xThis == null)
throw new NullReferenceException("xThis cannot be null, as it is a readonly reference ... ");
using (BinaryReader xReader = new BinaryReader(new FileStream(xFilePath, FileMode.Open, FileAccess.Read)))
xThis.readObject(xReader);
}
т.е. я задающий режим чтения, который в свою очередь должен требовать только доступ на чтение к папке. Когда мои коллеги перейдут в папку X в Проводнике, тогда можно скопировать файлы aa, bb, ... на свои рабочие столы, а это значит, что у них есть доступ к файлам для чтения.
Так что я заинтригован. Это странное поведение началось с изменений в сервере данных пару дней назад. Наиболее заметные изменения заключались в том, что 1/мои коллеги перестали иметь права администратора на сервере данных 2/некоторые объекты групповой политики, возможно, были испорчены (это произошло раньше в компании). ИТ-отдел тоже озадачен, поэтому я не знаю, как действовать.
Любой намек очень ценится, Daniel
Edit: уже удалил сообщение предложил использовать FileShare.ReadWrite
. Я благодарен автору за комментарий, однако в файле гарантируется отсутствие блокировки записи. Следовательно, нить why File.copy works but File.OpenRead prompts access denied? здесь не имеет отношения.
Является ли файл одновременно записывается в другой процесс? – Baldrick
Если это так, вам нужно добавить 'FileShare.ReadWrite' к параметрам, переданным конструктору' FileStream'. Это предотвращает попытку получить эксклюзивную блокировку чтения. – Baldrick
Возможный дубликат [почему File.copy работает, но File.OpenRead запрашивает доступ запрещен?] (Http://stackoverflow.com/questions/28087927/why-file-copy-works-but-file-openread-prompts-access- denied) – Baldrick