Editorlineends ttr процесс не может получить доступ к файлу
Процесс не может получить доступ к файлу, так как этот файл занят другим процессом. Но это не точно. Как показала практика, для программы на Delphi это действительно не точно.
При открытии файла в режиме "только для чтения" в параметре определяющем режим доступа к файлу обычно передают комбинацию "fmOpenRead or fmShareDenyNone". Но оказалось, что это избавляет только от части ошибок "Процесс не может получить доступ к файлу, так как этот файл занят другим процессом" или "The process cannot access the file because it is being used by another process".
Для начала немного теории. В Delphi режим доступа к файлу, определяется комбинацией константы режима открытия файла (fmOpen*) и константы разделения доступа к файлу (fmShare*). Эти константы описанны в модуле System.SysUtils. Приведу их значение для ОС Windows:
Наименование | Значение | Описание |
Режимы открытия файла | ||
fmOpenRead | $0000 | Открытие файла только для чтения |
fmOpenWrite | $0001 | Открытие файла только для записи |
fmOpenReadWrite | $0002 | Открытие файла для чтения и записи |
Режимы разделения доступа | ||
fmShareExclusive | $0010 | Другие приложения не имеют доступа к файлу |
fmShareDenyWrite | $0020 | Другие приложения могут только читать файл |
fmShareDenyRead | $0030 | Другие приложения могут только писать в файл |
fmShareDenyNone | $0040 | Другие приложения могут читать файл и писать в него |
Теперь перейдем к практике. Попробуем в режиме fmOpenRead открыть все файлы в каталоге для хранения временных файлов (там большая вероятность встретить файл, который занят какими-нибудь процессом).
Вариант 1. Откроем файлы без указания режима разделения доступа
У меня в каталоге для хранения временных файлов нашлось 23 файла, которые заняты какими-то процессами.
Вариант 2. Откроем файлы в режиме разделения доступа "fmShareDenyNone"
Теперь получаем 16 файлов занятых другими процессами и радуемся улучшению результата. Радуемся, но не долго. Некоторые из этих "занятых" файлов открываются на просмотр в "Lister" из Total Commander! Как так.
" не удается создать файл C:UsersAdminAppDataLocalTempEditorLineEnds - . ttr". Процесс cannont доступ к файлу, потому что это использование другим процессом."
Я попытался переустановить программу без успеха.
установленная версия: CodeGear™ Delphi® 2007 для Win32® R2 версии 11.0.2902.10471. Операционная система: Windows 7 Pro 64bit
обновление 08/14 13: 35 EDT Попробовал следующее решения, но все еще имеющие ту же проблему блокировки файлов:
- переименованный каталог Temp в каталог, который, как я знаю, имел полные права безопасности. Файлы будут созданы в этом каталоге при запуске Delphi, но EditorLineEnds.ttr все равно будет заблокирован системой и не позволит мне перезапустить.
- удалены следующие обновления безопасности KB2982791 и KB2976897, но это не решило проблему. Я подавил обновления Windows, на данный момент и попробую удаление всех исправлений безопасности для 8/13.
- полностью удалил Delphi и переустановил. Проблема по-прежнему возникает после повторной установки всего.
Я попробую переустановить Windows с нуля и установить Delphi перед Windows обновления, чтобы увидеть, действительно ли обновления являются причиной. Мое решение сейчас-это просто переименование EditorLineEnds.ttr перед запуском Delphi.
есть три решения этого, о которых я знаю:
- Попробуйте удалить Windows security update KB2982791, который уже упоминался Francisco Caffagni. Это решило проблему для меня (Windows 8.1 + Delphi 2007), но это может быть не такая хорошая идея, чтобы удалить обновление для системы безопасности Windows.
- переименовывайте файл при каждом запуске Delphi. См. ниже для простой программы, которая делает это за вас. использовать Андреас Hausladen по (Delphi 2007 версия остерегайтесь, что версия 4.4 не работает под Windows 8, версия 4.3, похоже, работает), (для более поздних версий Delphi) обратите внимание, что параметр редактора Show Lineends будет использовать другой символ, если вы используете это исправление, потому что IDE не будет загружать EditorLineEnds.шрифт ttr больше не используется. (Решение 1 и 2 не имеют этого недостатка, но кто использует такой вариант?)
Я писал простая программа, что решает проблему для меня:
Он использует FindFirstChangeNotification / FindNextChangeNotification и проверяет, существует ли этот файл, и если да, перемещает его в уникальный подкаталог в %temp%.
Это мой bds_start.сценарий bat работает Delphi2006 в системе Win7-64bit. Я настроил ответ GabeMeister и аналогичный скрипт, найденный в одной из ссылок. Теперь я могу перезапустить DelphiIDE без перезагрузки. Все файлы TTR temp по-прежнему заблокированы системой so del команда может не работать. Они удаляются после перезагрузки системы.
однако невозможно перезапустить Delphi, дважды щелкнув myproject.файлы проекта dpr. Я боялся устанавливать IDEFixPack для D2006, потому что один из комментариев не обещал ему работать.
bds_start.летучая мышь!--11-->
запуск cbuilder изменить аргумент на - pCBuilder. Возможно, лучше всего было бы создать bds.инструмент замены exe, del / move *.ttr-файл, выполнить и передать аргументы cmd в исходный bds_original.файл EXE. Это должно позволить *.ДНР дважды щелкните перезагрузится. Или используйте BdsLauncher.exe, который, я думаю, regedit связан с *.расширение ДНР. Затем списке процесс диски BD.имя exe.
вы можете откат легко двумя способами
1: Создайте пакетный файл со следующими строками
wusa / uninstall / kb: 2982791
wusa / uninstall / kb: 2970228
этот пакетный файл, который вы запускаете при запуске windows. но с auto update оба обновления устанавливаются каждый раз2: отключить КБ от autoupdate
после обновления goto WindowsUpdatesin в вашей системе. отключите оба КБ, так что на новых обновлениях это не будет установлен снова
для Delphi 2007 установите IDEFixPack 4.4 и добавьте в системные настройки следующую переменную среды:
Перезагрузка и все должно работать. У меня есть 2 ПК с Win 8.1 Pro и его работает как шарм!
просто чтобы указать, что обновление KB2982791 было отозвано Microsoft. Упомянутые причины, по-видимому, связаны с проблемами рендеринга шрифтов и сбоями системы, а не с этой конкретной проблемой, которая на первый взгляд кажется ошибкой Delphi и просто усугубляется обновлением.
в частности, эти разделы интерес:
проблема, похоже, связана с обновлениями Windows, установленными 13 августа. Я попытался удалить KB2982791, как было предложено предыдущим плакатом, но это не решило проблему. Удаление все обновления Windows от 13 августа все же вылечили проблему.
Если вы находитесь в windows, я сделал ярлык пакетного файла для запуска Delphi. В основном это пакетный файл, который изменяет имя EditorLineEnds.ttr к текущему времени даты, перемещает его в другую вложенную папку, а затем запускает Delphi.
вот содержимое моего пакетного скрипта:
то же самое для CodeGear Delphi 2009 В Windows 7
удаление после обновления windows 2982791 2970228 не поможет.
использование IDE Fix Pack после этого поможет.
Это небольшая программа, которая устраняет проблему, введенную центром обновления Windows KB2982791 с Delphi 2006 по 2010, которая вызывает ошибку " не удается создать файл %Temp%\EditorLineEnds.ttr". Он работает, перемещая файл в свой собственный уникальный подкаталог всякий раз, когда он создается.
Я использую Windows 8, а не 8.1
Я отключил все обновления Windows, и вчера я проверил наличие обновлений и установите все обновления безопасности. Сегодня у меня такая же проблема, но ни одно из вышеупомянутых обновлений не было установлено на моем ноутбуке. Я искал их все, но не нашел между установленными обновлениями безопасности:
KB2982791, KB2970228, KB2975719, KB2975331
но я нашел другое обновление KB2993651 и попытался удалить это процесс удаления был остановлен. Я сбросил комп. Теперь я не могу найти это обновление, и проблема не решена.
поэтому не нашел другого обходного пути и создал следующий скрипт, который я запускаю перед открытием RAD 2010.
Я использую функцию % RANDOM%, потому что с фиксированным именем во второй раз переименованный файл также будет заблокирован, и сценарий не будет успешным при переименовании.
«Невозможно создать файл C: \ Users \ Admin \ AppData \ Local \ Temp \ EditorLineEnds.ttr». Процесс не может получить доступ к файлу, потому что он используется другим процессом ".
Я безуспешно пытался переустановить программу.
Установленная версия: CodeGear ™ Delphi® 2007 для Win32® R2 Версия 11.0.2902.10471. Операционная система: Windows 7 Pro 64bit
Обновление 14.08, 13:35 EDT Пробовали следующие решения, но проблема с блокировкой файла все еще не устранена:
- Переименовал Temp Directory в каталог, который, как мне известно, имел полные права безопасности. Файлы будут созданы в этом каталоге при запуске Delphi, но EditorLineEnds.ttr все равно будет заблокирован SYSTEM и не позволит мне перезапустить.
- Были удалены следующие обновления безопасности KB2982791 и KB2976897, но это не решило проблему. На данный момент я отключил обновления Windows и попытаюсь удалить все исправления безопасности для 8/13.
- Полностью удалил Delphi и переустановил. Проблема все еще возникает после повторной установки всего.
Я попробую переустановить Windows с нуля и установить Delphi до обновлений Windows, чтобы проверить, действительно ли обновления являются причиной. На данный момент я просто переименовал EditorLineEnds.ttr перед запуском Delphi.
Я знаю три решения этой проблемы:
- Попробуйте удалить обновление безопасности Windows KB2982791, о котором уже упоминал Франсиско Каффаньи. Это решило проблему для меня (Windows 8.1 + Delphi 2007), но, возможно, было бы не очень хорошо удалять обновление безопасности Windows.
- Переименовывайте файл каждый раз при запуске Delphi. См. Ниже простую программу, которая сделает это за вас.
- Используйте IdeFixpack Андреаса Хаусладена (версию Delphi 2007, помните, что версия 4.4 не работает под Windows 8 , похоже, работает версия 4.3), (для более поздние версии Delphi). Обратите внимание, что при использовании этого исправления параметр редактора Show Lineends будет использовать другой символ, потому что IDE больше не будет загружать шрифт EditorLineEnds.ttr. (У решений 1 и 2 нет этого недостатка, но кто вообще использует этот вариант?)
Примечание. Microsoft отозвала это исправление через несколько дней и выпустила новое исправление KB2984615 27 августа 2014 г. К сожалению, это не помогло мне решить проблему. Возможно, сначала удаление KB2982791, а затем установка KB2984615 может сработать, но я не пробовал.
Я написал простую программу, которая решает для меня проблему:
Он использует FindFirstChangeNotification / FindNextChangeNotification и проверяет, существует ли этот файл, и, если да, перемещает его в уникальный подкаталог в% temp%.
Исходный код доступен в sourceforge.
Я использую Windows 8, а не 8.1
Я отключил все обновления Windows и вчера проверил наличие обновлений и установил все обновления безопасности. Сегодня у меня такая же проблема, но ни одно из вышеупомянутых обновлений не было установлено на моем ноутбуке. Я поискал их все, но между установленными обновлениями безопасности не нашел:
KB2982791, KB2970228, KB2975719, KB2975331
Но я нашел другое обновление KB2993651 и попытался удалить его, процесс удаления был остановлен. Я сбросил свой комп. Теперь я не могу найти это обновление, и проблема не решена.
Поэтому не нашел другого обходного пути и создал следующий сценарий, который я запускал перед открытием RAD 2010.
Я использую функцию% RANDOM%, потому что с фиксированным именем во второй раз переименованный файл также будет заблокирован, и сценарий не удастся переименовать.
Это небольшая программа, которая устраняет проблему, вызванную обновлением Windows KB2982791 с Delphi 2006–2010, которая вызывает ошибку «Не удается создать файл% Temp% \ EditorLineEnds.ttr». Он работает, перемещая файл в его собственный уникальный подкаталог всякий раз, когда он создается.
То же самое для CodeGear Delphi 2009 в Windows 7
Удаление следующего обновления Windows 2982791 2970228 не поможет.
Использование IDE Fix Pack после этого поможет.
Если вы работаете в Windows, я сделал ярлык командного файла для запуска Delphi. По сути, это командный файл, который изменяет имя EditorLineEnds.ttr на текущую дату и время, перемещает его в другую подпапку, а затем запускает Delphi.
Вот содержимое моего пакетного скрипта:
Проблема, похоже, связана с обновлениями Windows, установленными 13 августа. Я попытался удалить KB2982791, как было предложено на предыдущем плакате, но это не устранило проблему. Однако удаление всех обновлений Windows с 13 августа устранило проблему.
Просто хочу отметить, что обновление KB2982791 было отозвано Microsoft. Причины, по-видимому, связаны с проблемами рендеринга шрифтов и сбоями системы, а не с этой конкретной проблемой, которая, на первый взгляд, действительно является ошибкой Delphi и просто усугубляется обновлением.
В частности, представляют интерес эти разделы:
Для Delphi 2007 установите IDEFixPack 4.4 и добавьте следующую переменную среды в системные настройки:
Перезагрузитесь, и все должно работать. У меня есть 2 рабочих стола с Win 8.1 Pro, и он работает как шарм!
вы можете легко выполнить откат двумя способами
1: создайте командный файл со следующими строками
wusa / uninstall / kb: 2982791
wusa / uninstall / kb: 2970228
этот командный файл, который вы запускаете при запуске Windows. но с автоматическим обновлением оба обновления устанавливаются каждый раз2: отключить автоматическое обновление для базы знаний
после обновления перейдите в WindowsUpdates в вашей системе. отключите оба КБ, чтобы в новых обновлениях их не было установлен снова
"Невозможно создать файл C:\Users\Admin\AppData\Local\Temp\EditorLineEnds.ttr". Процесс cannont доступа к файлу, потому что он используется другим процессом.
Я попытался переустановить программу без везения.
Установленная версия: CodeGear ™ Delphi® 2007 для Win32® R2 версии 11.0.2902.10471.
Операционная система: Windows 7 Pro 64bit
Обновление 08/14 13:35 EDT
Пробовал следующие решения, но все еще имел такую же проблему с файловой блокировкой:
-
Переименованный каталог Temp в каталог, который я знаю, имеет полные права безопасности. Файлы будут создаваться в этом каталоге при запуске Delphi, но EditorLineEnds.ttr все равно будет заблокирован системой и не позволит мне перезапустить.
Удалены следующие обновления безопасности KB2982791 и KB2976897, но это не решило проблему. На данный момент я отключил обновления Windows и попытаюсь удалить все исправления безопасности для 8/13.
Удаленный Delphi полностью и переустановлен. Проблема все еще возникает после повторной установки всего.
Я попробую переустановить Windows с нуля и установить Delphi перед Windows
обновления, чтобы узнать, действительно ли вызваны обновления. Мое обходное решение пока просто переименовывает EditorLineEnds.ttr перед запуском Delphi.
Проблема, похоже, связана с обновлениями Windows, установленными 13 августа.
Я попытался удалить KB2982791, как это было предложено предыдущим плакатом, но это не устранило проблему.
Удаление обновлений all Windows с 13 августа устранило проблему.
Есть три решения для этого, о которых я знаю:
-
Попробуйте удалить обновление безопасности Windows KB2982791, которое уже упоминалось Франсиско Каффани. Это решило проблему для меня (Windows 8.1 + Delphi 2007), но, возможно, не очень хорошая идея удалить обновление безопасности Windows.
Переименуйте файл каждый раз, когда вы запускаете Delphi. Ниже приведена простая программа, которая делает это для вас.
Используйте Andreas Hausladen IdeFixpack (версия Delphi 2007, остерегайтесь, что версия 4.4 не работает под Windows 8, похоже, работает версия 4.3), (для более поздних версий Delphi) Обратите внимание, что параметр редактора Show Lineends будет использовать другой символ, если вы используете это исправление, потому что среда IDE не загружает шрифт EditorLineEnds.ttr больше. (Решение 1 и 2 не имеют этого недостатка, но кто использует эту опцию в любом случае?)
Я написал простую программу, которая решает проблему для меня:
Он использует FindFirstChangeNotification/FindNextChangeNotification и проверяет, существует ли этот файл, и если да, переводит его в уникальный подкаталог в% temp%.
Исходный код доступен из sourceforge.
Это мой bds_start.bat script запуск Delphi2006 на Win7-64bit системе. Я настроил ответ GabeMeister и аналогичный script найденный в одной из ссылок. Теперь я могу перезапустить DelphiIDE без перезагрузки. Все файлы ttr temp по-прежнему заблокированы системой, поэтому команда del может не работать. Они удаляются после перезагрузки системы.
Однако невозможно перезапустить Delphi, дважды щелкнув файлы проекта myproject.dpr. Я боялся установить IDEFixPack для D2006, потому что один из комментариев не обещал, что это сработает.
bds_start.bat
Запуск CBuilder изменить аргумент -pCBuilder. Возможно, лучшим решением было бы создать инструмент замены bds.exe, файл del/move *.ttr, запустить и передать CMD-аргументы в исходный файл bds_original.exe. Это должно включить перезагрузку двойного щелчка *.dpr. Или используйте BdsLauncher.exe, который, я думаю, regedit связан с расширением *.dpr. Тогда в списке процессов было имя bds.exe.
Для Delphi 2007 установите IDEFixPack 4.4 и добавьте в системные настройки следующую переменную среды:
Перезагрузитесь, и он должен работать.
У меня есть 2 настольных компьютера с Win 8.1 Pro и работает как шарм!
вы можете откатить простым способом двумя способами.
1: создать пакетный файл со следующими строками
wusa/uninstall/kb: 2982791
wusa/uninstall/kb: 2970228
этот командный файл, который вы запускаете при запуске окон. но с автоматическим обновлением оба обновления устанавливаются каждый раз2: отключить KB от autoupdate
после обновления goto WindowsUpdatesin вашей системы. отключите оба КБ, так что на новых обновлениях это не будет установлен снова
Просто отметим, что обновление KB2982791 было изъято Microsoft. Приведенные причины представляют собой проблемы с рендерингом шрифтов и сбоями системы, а не с этой конкретной проблемой, которая, на первый взгляд, кажется ошибкой Delphi и просто усугубляется обновлением.
В частности, эти разделы представляют интерес:
Читайте также: