Ошибка Delphi 2006-2010: «Не удается создать файл C: \ Users \ Admin \ AppData \ Local \ Temp \ EditorLineEnds.ttr»

54

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

"Невозможно создать файл 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.

  • 0
    Как у вас работает программа? Запуск от имени администратора. Повышенные? Вы вошли как пользователь с именем «Admin»? Это кажется странным.
  • 0
    Информация, предоставленная Jeroen, предполагает (перейдите по ссылкам на КК), что у вас может быть запущен дополнительный процесс BDS.
Показать ещё 4 комментария
Теги:
delphi-2009
delphi-2010
delphi-2007
delphi-2006

10 ответов

41
Лучший ответ

Есть три решения для этого, о которых я знаю:

  • Попробуйте удалить обновление безопасности 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 не имеют этого недостатка, но кто использует эту опцию в любом случае?)

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

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

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

Binary download

Исходный код доступен из sourceforge.

  • 3
    IdeFixPack исправляет это.
  • 1
    Теперь существует KB2993651, который заменяет KB2982791. Если кто-нибудь знает, является ли это причиной проблемы, обновите этот ответ.
Показать ещё 5 комментариев
6

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

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

bds_start.bat

@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\4.0\Bin\bds.exe" -pDelphi

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

  • 0
    Кажется, работает сейчас. После того, как я выполнил свой проект без проблем, я напишу здесь, чтобы использовать его как простое и хорошее рабочее решение. И один, возможно, глупый вопрос: вы уверены, что у этой проблемы не было недостатков в окончательно опубликованном проекте? Благодарю.
3

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

IDEFixPack.DisabledPatches = DotNet.GlobalizationSearch

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

  • 0
    Работало у меня без перезагрузки :)
3

Вот еще одно обходное решение из http://www.danielmagin.de/blog/index.php/2014/08/windows-update-disable-delphi-2007-2010/

Цитата:

вы можете откатить простым способом двумя способами.

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

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

  • 0
    Удаление и окончательное отключение обновления для системы безопасности Windows может оказаться не лучшим вариантом. Но это лучше, чем вообще не работать.
  • 1
    Это решение также работает для C ++ Builder 2006 в Windows 7.
Показать ещё 1 комментарий
2

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

Была обновлена ​​статья KB на сайте 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 Обновленный накопительный пакет обновления для Windows RT, Windows 8 и Windows Server 2012

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

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

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

Статус
Microsoft удалила ссылки для скачивания на эти обновления, пока эти вопросы расследуются.

  • 0
    Похоже, что более свежее обновление - KB2993651 - теперь вызывает ту же проблему: support.microsoft.com/kb/2993651
1

dzEditorLineEndsFix - Невозможно создать файл% Temp%\EditorLineEnd.ttr

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

1

То же самое для CodeGear Delphi 2009 в Windows 7

Удаление следующего обновления Windows 2982791 2970228 не поможет.

Использование пакета исправлений IDE после этого поможет.

1

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

Вот содержимое моей партии script:

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\6.0\bin\bds.exe"
  • 0
    Заслуженный 1 балл, но для лучшего отредактированного решения проверьте ответ @Whome.
1

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

  • 2
    см обновление в оригинальном сообщении.
0

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

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

KB2982791, KB2970228, KB2975719, KB2975331

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

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

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню