Delphi 2006-2010 ошибка: "не удается создать файл C:UsersAdminAppDataLocalTempEditorLineEnds.ТТК"


Я получаю сообщение об ошибке после установки Delphi 2007 (Edit: эта проблема возникает во всех версиях Delphi с 2006 по 2010 год), что я не могу понять и никогда не видел раньше. После перезагрузки я могу запустить программу без каких-либо проблем, но если я закрыть программу и запустить снова, это дает мне следующую ошибку:

" не удается создать файл C:UsersAdminAppDataLocalTempEditorLineEnds.ТТР". Процесс не может получить доступ к файлу, потому что это использование другим процессом."

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

Я попытался переустановить программу без успеха.

установленная версия: CodeGear ™ Delphi® 2007 для Win32® R2 версии 11.0.2902.10471. Операционная система: Windows 7 Pro 64bit

обновление 08/14 13: 35 EDT Попробовал следующее решения, но по-прежнему имеющие ту же проблему блокировки файлов:

  1. переименовал временный каталог в каталог, который, как я знаю, имел полные права безопасности. Файлы будут созданы в этом каталоге при запуске Delphi, но EditorLineEnds.ttr все равно будет заблокирован системой и не позволит мне перезапустить.
  2. удалил следующие обновления безопасности KB2982791 и KB2976897, но это не решило проблему. Я подавил обновления Windows, на данный момент и попробую удаление всех исправлений безопасности для 8/13.
  3. полностью удалил Delphi и переустановил. Проблема по-прежнему возникает после переустановки все.

Я попробую переустановить Windows с нуля и установить Delphi перед Windows обновления, чтобы увидеть, действительно ли обновления являются причиной. Мой обходной путь на данный момент-это просто переименование EditorLineEnds.ttr перед запуском Delphi.

10 54

10 ответов:

есть три решения для этого, что я знаю:

  1. Попробуйте удалить обновление для системы безопасности Windows KB2982791, которое уже упоминалось Francisco Caffagni. Это решило проблему для меня (Windows 8.1 + Delphi 2007), но это может быть не такая хорошая идея, чтобы удалить обновление для системы безопасности Windows.
  2. переименовывать файл при каждом запуске Delphi. Смотрите ниже для простой программы, которая делает это за вас.
  3. использовать Андреас Hausladen по (Delphi 2007 version остерегайтесь, что версия 4.4 не работает под Windows 8, версия 4.3, кажется, работает), (для более поздних версий Delphi) обратите внимание, что параметр редактора Show Lineends будет использовать другой символ, если вы используете это исправление, потому что IDE не будет загружать EditorLineEnds.шрифт ttr больше нет. (Решение 1 и 2 не имеют этого недостатка, но кто использует такой вариант?)

Примечание: Microsoft отозвала это исправление через несколько дней и выпустил новый KB2984615 на 2014-08-27. К сожалению, это не решило проблему для меня. Возможно, сначала удалите KB2982791, а затем установите KB2984615, но я не пробовал.

Я писал простая программа, что решает проблему для меня:

Он использует FindFirstChangeNotification / FindNextChangeNotification и проверяет, существует ли этот файл, и если да, перемещает его в уникальный подкаталог в %temp%.

Бинарные скачать

исходный код от sourceforge.

Это мой bds_start.скрипт bat работает Delphi2006 на Win7-64bit системе. Я настроил ответ GabeMeister и аналогичный скрипт, найденный в одной из ссылок. Теперь я могу перезапустить DelphiIDE без перезагрузки. Все временные файлы ttr по-прежнему заблокированы системой so del команда может не работать. Они удаляются после перезагрузки системы.

однако невозможно перезапустить Delphi, дважды щелкнув myproject.файлы проекта dpr. Я боялся, чтобы установить IDEFixPack для D2006 потому что один из комментариев не обещал ему работать.

bds_start.летучая мышь

@REM http://www.danielmagin.de/blog/index.php/2014/08/windows-update-disable-delphi-2007-2010/
@REM http://stackoverflow.com/questions/25295980/delphi-2007-error-cannot-create-file-c-users-admin-appdata-local-temp-editorl
@REM http://docs.embarcadero.com/products/rad_studio/delphiAndcpp2009/HelpUpdate2/EN/html/devcommon/idecommandline_xml.html

@REM del files created by DelphiIDE, may not able to delete but
@REM moving to a new name is possible. Use unique name by timestamp.
del "%temp%\EditorLineEnds*.ttr"
set dt=%date%_%time:~3,2%-%time:~6,2%
rename "%temp%\EditorLineEnds.ttr" "EditorLineEnds_%dt%.ttr"
start "" "C:\Borland\BDS.0\Bin\bds.exe" -pDelphi

запуск CBuilder изменить аргумент на - pCBuilder. Может быть, лучше всего было бы создать bds.инструмент для замены exe, del / move *.ttr-файл, запуск и передача аргументов cmd в исходный bds_original.файл EXE. Это должно включить *.ДНР дважды щелкните перезагрузится. Или использовать BdsLauncher.exe, который я думаю, regedit связан с *.расширение ДНР. Затем списке процесс диски BD.имя exe.

вот еще один обходной путь от http://www.danielmagin.de/blog/index.php/2014/08/windows-update-disable-delphi-2007-2010/

цитата:

вы можете откат легко двумя способами

1: Создайте пакетный файл со следующими строками
wusa / uninstall / kb: 2982791
wusa / uninstall / kb: 2970228
этот пакетный файл вы запускаете при запуске windows. но с автоматическим обновлением оба обновления устанавливаются каждый раз

2: отключить КБ от autoupdate
после обновления goto WindowsUpdatesin вашей системы. отключите оба КБ, поэтому на новых обновлениях это будет не так установлен снова

для Delphi 2007 установите IDEFixPack 4.4 и добавьте в системные настройки следующую переменную окружения:

IDEFixPack.DisabledPatches=DotNet.GlobalizationSearch

Перезагрузка и все должно работать. У меня есть 2 ПК с Win 8.1 Pro и его работает как шарм!

просто чтобы отметить, что обновление KB2982791 было отозвано Microsoft. Приведенные причины, по-видимому, являются проблемами с рендерингом шрифтов и сбоями системы, а не этой конкретной проблемой, которая, на первый взгляд, действительно является ошибкой Delphi и просто усугубляется обновлением.

статья базы знаний на сайте Microsoft была обновлена:http://support.microsoft.com/kb/2982791

в частности, эти разделы имеют интерес:

известная проблема 2
Microsoft изучает поведение, в котором шрифты делают не отображается правильно после установки любого из следующих обновлений:
2982791 MS14-045: описание обновления для системы безопасности в режиме ядра водители: 12 августа 2014
2970228 обновление для поддержки новой валюты символ российского рубля в Windows
Обновления 2975719 августа 2014 накопительный пакет для Windows RT 8.1, Windows 8.1 и Windows Server 2012 R2
2975331 август 2014 накопительный пакет обновления для Windows RT, Windows 8 и Windows Server 2012

статус
Microsoft удалила ссылки для загрузки эти обновления в то время как эти проблемы исследуются.

известная проблема 3
Microsoft изучает поведение, в котором системы могут сбой с сообщением об ошибке 0x50 Stop (bugcheck) после любого из следующие обновления установлено:
2982791 MS14-045: описание обновление безопасности для драйверов режима ядра: 12 августа 2014
Два миллиона девятьсот семьдесят тысяч двести двадцать восемь Обновление для поддержки нового символа валюты российского рубля в Windows
2975719 август 2014 накопительный пакет обновления для Windows RT 8.1, Windows 8.1, и Windows Server 2012 R2
2975331 август 2014 накопительный пакет обновления для Windows RT, Windows 8 и Windows Server 2012

Это условие может быть настойчивый и может предотвратить система от начала правильно.

статус
Корпорация Майкрософт удалила ссылки для загрузки этих обновлений во время эти вопросы изучаются.

проблема, похоже, связана с обновлениями Windows, установленными 13 августа. Я попытался удалить KB2982791, как было предложено предыдущим плакатом, но это не исправило проблему. Удаление все обновления Windows от 13 августа, однако, вылечили проблему.

Если вы находитесь на windows, я сделал ярлык пакетного файла для запуска Delphi. В основном это пакетный файл, который изменяет имя EditorLineEnds.ttr к текущему времени даты, перемещает его в другую подпапку, а затем запускает Delphi.

вот содержимое моего пакетного скрипта:

SET HOUR=%time:~0,2%
SET dtStamp9=%date:~-4%%date:~4,2%%date:~7,2%_0%time:~1,1%%time:~3,2%%time:~6,2% 
SET dtStamp24=%date:~-4%%date:~4,2%%date:~7,2%_%time:~0,2%%time:~3,2%%time:~6,2%

if "%HOUR:~0,1%" == " " (SET dtStamp=%dtStamp9%) else (SET dtStamp=%dtStamp24%)

if exist "C:\Users\<username here>\AppData\Local\Temp\EditorLineEnds.ttr" (
  echo "Moving EditorLineEnds.ttr"
  MOVE "C:\Users\<username here>\AppData\Local\Temp\EditorLineEnds.ttr" "C:\Users\<username here>\AppData\Local\Temp\ExtraEditorLineEnds\%dtStamp%.ttr"
) else (
  echo "EditorLineEnds.ttr was not found."
)
start "C:\Program Files (x86)\CodeGear\RAD Studio.0\bin\bds.exe"

то же самое для CodeGear Delphi 2009 на Windows 7

удаление following Windows update 2982791 2970228 не поможет.

использование IDE Fix Pack после этого поможет.

dzEditorLineEndsFix-не удается создать файл %Temp%\EditorLineEnd.ТТР

Это небольшая программа, которая устраняет проблему, появившуюся в Центре обновления Windows KB2982791 с Delphi 2006 по 2010, которая вызывает ошибку " не удается создать файл %Temp%\EditorLineEnds.ТТР". Он работает, перемещая файл в свой собственный уникальный подкаталог всякий раз, когда он создается.

Я использую Windows 8, а не 8.1

Я отключил все обновления Windows, и вчера я проверил наличие обновлений и установите все обновления безопасности. Сегодня у меня такая же проблема, но ни одно из вышеупомянутых обновлений не было установлено на моем ноутбуке. Я искал их все, но не нашел ни одного между установленными обновлениями безопасности:

KB2982791, KB2970228, KB2975719, KB2975331

но я нашел еще одно обновление KB2993651 и попытался удалить это процесс удаления был остановлен. Я сбросил комп. Теперь я не могу найти это обновление, и проблема не решена.

поэтому не нашел другого обходного пути и создал следующий скрипт, который я запускаю перед открытием RAD 2010.

cd %temp%
ren EditorLineEnds.ttr EditorLineEnds%RANDOM%.ttr

Я использую функцию % RANDOM%, потому что с фиксированным именем во второй раз переименованный файл также будет заблокирован, и сценарий не удастся переименовать.