Windows имеет возможность совместно использовать одновременный доступ к файлам с помощью таких механизмов, как блокировки диапазона байтов, посредством которых процесс блокирует только определенную область файла и т. Д. Но приложения должны быть написаны соответствующим образом чтобы воспользоваться этим. Вполне возможно закодировать ваше приложение таким образом, чтобы вы блокировали весь файл, а не только его область. Вы даже можете заблокировать файл, чтобы другой процесс не мог даже прочитать его.
Однако вы усложняете ситуацию, когда говорите о доступе к файлу в сетевой папке. Теперь мы получаем доступ к файлам по сетевому протоколу SMB.
SMB использует oplocks (гибкие блокировки) и аренду для управления одновременным доступом к файлам. Типы оппозиционных блокировок и аренды следующие:
Неисправные блокировки
Аренда
Внутреннее устройство Windows 6-е изд., Марк Руссинович и др.
Ни один из этих режимов не предоставит вам общего доступа для записи, который вы ищете.
Измените свою стратегию. Как сказал MDMarra, журнал событий Windows - лучший выбор. Другая идея состоит в том, чтобы все клиенты записывали в свои собственные файлы в общей папке, а затем серверный процесс собирал все файлы и объединял их. Вы упоминаете в своем вопросе, что пишете код, поэтому вы можете изменить способ работы этого приложения. Я бы посоветовал зайти в StackOverflow и спросить их, как лучше всего использовать общий доступ для записи к одному файлу по сети.
Эта аренда поддерживает кэширование чтения, записи и обработки (аналогично аренде Read-Handle).Внутреннее устройство Windows 6-е изд., Марк Руссинович и др.
Ни один из этих режимов не предоставит вам общего доступа для записи, который вы ищете.
Измените свою стратегию. Как сказал MDMarra, журнал событий Windows - лучший выбор. Другая идея состоит в том, чтобы все клиенты записывали в свои собственные файлы в общей папке, а затем серверный процесс собирал все файлы и объединял их. Вы упоминаете в своем вопросе, что пишете код, поэтому вы можете изменить способ работы этого приложения. Я бы посоветовал зайти в StackOverflow и спросить их, как лучше всего использовать общий доступ для записи к одному файлу по сети.
Эта аренда поддерживает кэширование чтения, записи и обработки (аналогично аренде Read-Handle).Внутреннее устройство Windows 6-е изд., Марк Руссинович и др.
Ни один из этих режимов не предоставит вам общего доступа для записи, который вы ищете.
Измените свою стратегию. Как сказал MDMarra, журнал событий Windows - лучший выбор. Другая идея состоит в том, чтобы все клиенты записывали в свои собственные файлы в общей папке, а затем серверный процесс собирал все файлы и объединял их. Вы упоминаете в своем вопросе, что пишете код, поэтому вы можете изменить способ работы этого приложения. Я бы посоветовал зайти в StackOverflow и спросить их, как лучше всего использовать общий доступ для записи к одному файлу по сети.
Марк Руссинович и др.Ни один из этих режимов не предоставит вам общего доступа для записи, который вы ищете.
Измените свою стратегию. Как сказал MDMarra, журнал событий Windows - лучший выбор. Другая идея состоит в том, чтобы все клиенты записывали в свои собственные файлы в общей папке, а затем серверный процесс собирал все файлы и объединял их. Вы упоминаете в своем вопросе, что пишете код, поэтому вы можете изменить способ работы этого приложения. Я бы посоветовал зайти в StackOverflow и спросить их, как лучше всего использовать общий доступ для записи к одному файлу по сети.
Марк Руссинович и др.Ни один из этих режимов не предоставит вам общего доступа для записи, который вы ищете.
Измените свою стратегию. Как сказал MDMarra, журнал событий Windows - лучший выбор. Другая идея состоит в том, чтобы все клиенты записывали в свои собственные файлы в общей папке, а затем серверный процесс собирал все файлы и объединял их. Вы упоминаете в своем вопросе, что пишете код, поэтому вы можете изменить способ работы этого приложения. Я бы посоветовал зайти в StackOverflow и спросить их, как лучше всего использовать общий доступ для записи к одному файлу по сети.
Другая идея состоит в том, чтобы все клиенты записывали в свои собственные файлы в общей папке, а затем серверный процесс собирал все файлы и объединял их. Вы упоминаете в своем вопросе, что пишете код, поэтому вы можете изменить способ работы этого приложения. Я бы посоветовал зайти в StackOverflow и спросить их, как лучше всего использовать общий доступ для записи к одному файлу по сети. Другая идея состоит в том, чтобы все клиенты записывали в свои собственные файлы в общей папке, а затем серверный процесс собирал все файлы и объединял их. Вы упоминаете в своем вопросе, что пишете код, поэтому вы можете изменить способ работы этого приложения. Я бы посоветовал зайти в StackOverflow и спросить их, как лучше всего использовать общий доступ для записи к одному файлу по сети.Нет. Когда файл открывается для записи, он блокируется. Другие попытки записи в заблокированном состоянии приведут к «Доступ запрещен»
. Вам следует подумать о том, чтобы записать все эти события в локальные журналы событий, а затем использовать подписки на журналы событий для извлечения всех этих журналов в центральный источник. Оттуда вы можете экспортировать его в любой желаемый формат.
Другой способ решения этой проблемы мог бы заключаться в том, чтобы каждая машина имела эксклюзивную блокировку файла во время записи и освобождения его сразу же после этого, а также чтобы каждая машина была запрограммирована с помощью петли, которая пытается получить доступ на запись в файл, и после получения сообщения "доступ запрещен" просто повторяет попытку до тех пор, пока файл не станет доступен. Этому человеку необходимо добавить короткие сообщения журнала к общему файлу. Таким образом, каждая машина заблокирует файл только на короткое время. Петля для получения эксклюзивной блокировки на запись быстро получит доступ на запись. При условии, что каждый процесс записывает в режиме добавления, я считаю, что это должно обеспечить необходимую функцию, при которой каждая машина будет добавлять в лог-файл по мере необходимости.
.