Иногда мы получаем отчеты о поврежденных файлах от клиентов. Они редки и практически невозможно воспроизвести. Когда мы выполняем удаленный вход в систему клиентов, мы обнаруживаем, что файл (обычно INI-файл) открыть нельзя. Также файл не может быть скопирован локально для анализа. Исходя из ограниченного числа примеров, эти поврежденные файлы имеют размер "0 КБ" и могут быть удалены только. Когда это происходит, похоже, что он влияет только на один INI-файл из десятков. В остальном система в порядке. После восстановления поврежденного файла система полностью восстанавливается.

Мы не знаем, как это происходит, и хотели бы воспроизвести и, надеюсь, решить проблему. Это может быть проблема Windows, ошибка кодирования, даже аппаратная проблема, связанная с неожиданным выключением компьютера. В целях тестирования я создал TXT-файл со случайным мусором, как в:

// Delphi code, but applies to any language
procedure TfrmDiagnostics.CreateCorruptFile();
var
    fpDump: TextFile;
    nChar: Integer;
begin
    RandSeed := (GetTickCount() mod 23);
    AssignFile(fpDump, 'C:\Corrupted.txt');
    for nChar:=1 to 100 do
        Write(fpDump, Chr(Random(250)));

    Flush(fpDump);
    CloseFile(fpDump);
end;

Это создает красиво искаженный файл, первые несколько байтов были: NREâA # »Bâ ÷ lÁb… ilL('- ØÏD YL & d .... Но файл все еще открывается в Notepad++ и нескольких других редакторах ASCII, которые я пробовал.

Можно ли создать в Windows действительно "поврежденный" файл, который Windows отказывается открывать? Возможно, это связано с работой с таблицей размещения файлов, но я сомневаюсь, что пользователи имеют какой-либо доступ к FAT (и в любом случае это не кажется безопасным).

1 ответ1

0

Причина, по которой файл не может быть открыт, не в том, что файл поврежден, а в том, что в нем есть блокировка записи.

Это означает, что сетевое соединение было разорвано, когда файл был открыт, и сервер сохраняет блокировку активной.

Если вы откроете « Computer Management на сервере и откроете «Открыть файлы», вы должны найти ссылки на эти INI-файлы с возможностью снять блокировку, после чего вы сможете снова сделать что-нибудь для файла.

Чтобы воссоздать такое обстоятельство, создайте файл или откройте существующий файл. Написать в файл. При этом отключите компьютер от сети, а затем снова подключите. Файл будет поврежден и не может быть открыт аналогично тому, как вы видели ранее.

Теперь выясните причину отключения сети. Например, при работе с групповыми политиками обратите внимание, что групповые политики обновляются примерно каждые 90 минут. Если вы установите замену общего ресурса, он удалит общий ресурс и будет воссоздавать его каждые 90 минут с случайным интервалом в несколько минут. Если в это время вы выполняете запись в файл, он может быть поврежден.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .