При каких обстоятельствах системный процесс (PID 4) сохраняет дескриптор открытого файла?

StackOverflow https://stackoverflow.com/questions/1293398

  •  18-09-2019
  •  | 
  •  

Вопрос

Мое приложение, работающее на сервере Windows, использует базу данных Jet/Access.По некоторым причинам примерно каждые две недели этот файл базы данных блокируется системным процессом (PID 4, похоже, исправлен)

После некоторого поиска в Google я обнаружил, что файлы некоторых других пользователей заблокированы этим специальным процессом, но это другие файлы (конечно).

  • Какова общая причина, по которой системный процесс сохраняет дескриптор открытого файла?
  • Является ли мое приложение причиной этой ситуации блокировки?
  • Все ли дескрипторы неявно открываются системным процессом?Я мог бы представить, что после сбоя процесса дескриптор все еще может быть открыт, и системный процесс каким-то образом берет на себя управление этим дескриптором.
  • Могу ли я что-то сделать в своем приложении, чтобы этого не произошло?
Это было полезно?

Решение

Для меня это звучит как проблема на уровне драйвера с негерметичной ручкой.

Если вы используете антивирусный пакет, попробуйте обновить его, отключить (временно!) или перейти на другой бренд.

Другие советы

Файлы, доступ к которым осуществляется через общий ресурс, будут заблокированы системным процессом (PID 4).

Попробуйте открыть compmgmt.msc -> Системные инструменты -> Общие папки -> Открыть файлы чтобы увидеть, указан ли там заблокированный файл

Смотрите также форум sysinternals для способа повторить это.
Не все приложения блокируют файлы при их открытии, однако Excel это делает.Я не знаю, делает ли Access то же самое...

Вот еще одна возможная причина, которую я нашел:

Ошибка есть в Windows 7 и, вероятно, в Windows Server 2008 (возможно, только в 64-битных версиях).Он появляется, когда вы отключите Опыт применения service и вызывает те же проблемы, что описаны в вопросе.

Повторное включение этой службы решило для меня эту проблему.

Еще немного информации здесь относительно того, почему это вызывает проблему.

Список других вопросов SO, которые кажутся связанными:

Это может быть затяжной сеанс с удаленного компьютера в общую папку.В этом случае его можно разблокировать из командной строки:

net session /delete

Настроен ли ваш сервер для периодического резервного копирования файлов?

Если да, то выполняется ли резервное копирование от имени системы и, возможно, при возникновении конфликта запрашивается заблокированный файл?

Для меня это был «Защитник Windows» (антивирус).Я исключил папки сборки Visual Studio из списка проверяемых папок Защитника Windows, и проблема исчезла.(Visual Studio не удалось выполнить сборку EXE-файла, PID 4 блокировал его для проверки наличия вирусов)

Для меня мне пришлось ударить его кувалдой.Chkdsk /f на диске, где находилась папка, исправил проблему.Используйте с осторожностью.

Проверьте настройки безопасности для каждой папки и подпапок.Убедитесь, что система не просто автоматически создала специальную настройку разрешений, которая не позволит никому удалить файл.Видимо, по какой-то странной причине ОС создает странный специальный параметр разрешения, который защищает файл от удаления.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top