【问题标题】:Delphi 2006-2010 error: "Cannot create file C:\Users\Admin\AppData\Local\Temp\EditorLineEnds.ttr"Delphi 2006-2010 错误:“无法创建文件 C:\Users\Admin\AppData\Local\Temp\EditorLineEnds.ttr”
【发布时间】:2014-10-07 09:25:06
【问题描述】:

安装 Delphi 2007 后出现错误(编辑:此问题出现在 2006 年至 2010 年的所有 Delphi 版本中),我无法弄清楚并且以前从未见过。重新启动后,我可以毫无问题地启动程序,但是如果我要关闭程序并重新启动,它会给我以下错误:

“无法创建文件 C:\Users\Admin\AppData\Local\Temp\EditorLineEnds.ttr”。该进程无法访问该文件,因为它正被另一个进程使用。”

“系统”对此文件有一个句柄,除非我重新启动,否则无法清除该句柄。我还可以通过在启动程序之前重命名文件来解决问题。

我尝试重新安装程序,但没有成功。

安装的版本:CodeGear™ Delphi® 2007 for Win32® R2 版本 11.0.2902.10471。 操作系统:Windows 7 Pro 64bit

更新 08/14 13:35 EDT 尝试了以下解决方案,但仍然遇到相同的文件锁定问题:

  1. 已将临时目录重命名为我知道具有完全安全权限的目录。启动 Delphi 时会在此目录中创建文件,但 EditorLineEnds.ttr 仍会被 SYSTEM 锁定并阻止我重新启动。
  2. 卸载了以下安全更新 KB2982791 和 KB2976897,但这并没有解决问题。我目前已禁止 Windows 更新,并将尝试卸载 8/13 的所有安全补丁。
  3. 完全卸载 Delphi 并重新安装。重新安装所有内容后问题仍然存在。

我将尝试从头开始重新安装 Windows 并在 Windows 之前安装 Delphi 更新以查看更新是否真的是原因。我现在的解决方法是在启动 Delphi 之前重命名 EditorLineEnds.ttr。

【问题讨论】:

  • 你是如何运行程序的?以管理员身份运行。升高?您是否以名为“Admin”的用户身份登录?这似乎很奇怪。
  • Info provided by Jeroen 建议(按照 QC 的链接)您可能有一个额外的 BDS 进程正在运行。
  • 我遇到了同样的问题。请参阅 Microsoft 支持support.microsoft.com/kb/2982791
  • @SertacAkyuz - 我们使用 taskmanager 确保没有其他 BDS 实例在运行。
  • 您是否尝试过适用于 Delphi 2007 的 IDEFixPack? (tinyurl.com/p9rt9ta) 它有一个补丁(从 2.7 版开始),可以防止 IDE 加载字体文件。 IDE 仍会创建临时文件,但不会锁定它。 - 如果文件在尝试 IDEFixPack 之前已被锁定,则必须重新启动。

标签: delphi delphi-2010 delphi-2009 delphi-2007 delphi-2006


【解决方案1】:

我知道有三种解决方案:

  1. 尝试卸载 Francisco Caffagni 已经提到的 Windows 安全更新 KB2982791。这解决了我的问题(Windows 8.1 + Delphi 2007),但卸载 Windows 安全更新可能不是一个好主意。
  2. 每次启动 Delphi 时重命名文件。请参阅下面的简单程序,为您完成此操作。
  3. 使用 Andreas Hausladen 的 IdeFixpack(Delphi 2007 version,注意 4.4 版在 Windows 8 下不工作,4.3 版似乎可以工作),(for later Delphi versions)请注意,编辑器选项 Show Lineends 将如果您使用此修复程序,请使用不同的字符,因为 IDE 将不再加载 EditorLineEnds.ttr 字体。 (解决方案 1 和 2 没有这个缺点,但是谁使用那个选项呢?)

注意:微软几天后撤回了此修复,并于 2014 年 8 月 27 日发布了新的 KB2984615。不幸的是,这并没有为我解决问题。可能先卸载 KB2982791 再安装 KB2984615 可能可行,但我没试过。

我写了a simple program,为我解决了这个问题:

它使用 FindFirstChangeNotification / FindNextChangeNotification 并检查该文件是否存在,如果存在,则将其移动到 %temp% 中的唯一子目录。

Binary download

源代码在from sourceforge.

【讨论】:

  • 现在有一个 KB2993651 替换 KB2982791。如果有人知道这是否也会导致问题,请更新此答案。
  • @JanDoggen 是的。更新 KB2993651 再次触发问题。我现在在 Windows 7 上使用 Delphi 2007 时遇到了同样的问题(顺便说一句,这是第一次)。 IdeFixPack 没有为我解决问题,但卸载 KB2993651 解决了。
  • 好吧,这很奇怪。我卸载了更新,之后问题就消失了。然后重新安装它以测试@dummzeuch的工具是否也可以解决问题,但是在我重新安装更新后,问题仍然没有出现。所以,现在的结论是:卸载并重新安装更新可以解决问题吗? :-S
  • 对我来说同样的问题,但我必须重新启动计算机才能删除文件(注销或解锁应用程序不起作用)。
  • 我遇到这个问题时没有 KB2982791,但是有 KB2993651。我卸载了它,但问题仍然存在。我使用 Win7 和 Delphi 2007(试用版)。
【解决方案2】:

这是我在 Win7-64 位系统上运行 Delphi2006 的 bds_start.bat 脚本。我在其中一个链接中自定义了 GabeMeister 答案和类似脚本。我现在可以在不重启的情况下重启 DelphiIDE。所有 ttr 临时文件仍被系统锁定,因此 del 命令可能不起作用。一旦系统重新启动,它们就可以删除。

然而,双击 myproject.dpr 项目文件,重启 Delphi 是不可能的。我害怕为 D2006 安装 IDEFixPack,因为其中一个 cmets 没有承诺它会起作用。

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 替换工具,删除/移动 *.ttr 文件,运行 cmd 参数并将其传递给原始 bds_original.exe 文件。这应该启用 *.dpr 双击重新启动。或者使用我认为是链接到 *.dpr 扩展名的 regedit 的 BdsLauncher.exe。然后进程列表有 bds.exe 名称。

【讨论】:

  • 它现在似乎正在工作。在我毫无问题地完成我的项目后,我将在这里写信以将其用作简单且有效的解决方案。还有一个可能很愚蠢的问题:你确定这个问题在最终发布的项目中没有任何缺点吗?谢谢。
【解决方案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
您在 Windows 启动时运行的这个批处理文件。但是每次自动更新都会安装两个更新

2:禁用 KB 的自动更新
更新后转到系统中的 WindowsUpdates。禁用这两个 KB 等新的更新它不会 重新安装

【讨论】:

  • 卸载并永久禁用 Windows 安全更新可能不是最佳选择。但总比不能工作要好。
【解决方案4】:

对于 Delphi 2007,安装 IDEFixPack 4.4 并将以下环境变量添加到系统设置中:

IDEFixPack.DisabledPatches=DotNet.GlobalizationSearch

重新启动,它应该可以工作。 我有 2 个装有 Win 8.1 Pro 的桌面,它的工作方式非常棒!

【讨论】:

  • 为我工作而无需重新启动:)
【解决方案5】:

如果您使用的是 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\6.0\bin\bds.exe"

【讨论】:

  • 当之无愧的 1 分,但要获得更好的编辑解决方案,请查看@Whome 答案。
【解决方案6】:

只是指出 KB2982791 更新已被 Microsoft 撤回。所引用的原因似乎是字体渲染和系统崩溃的问题,而不是这个具体问题,从表面上看,这似乎是 Delphi 的错,只是更新加剧了。

微软网站上的知识库文章已更新:http://support.microsoft.com/kb/2982791

特别感兴趣的是这些部分:

已知问题 2
微软正在调查字体的行为 安装以下任何更新后无法正确呈现:
2982791 MS14-045:内核模式的安全更新说明 司机:2014 年 8 月 12 日
2970228 更新以支持新货币 Windows 中俄罗斯卢布的符号
2975719 2014 年 8 月更新 Windows RT 8.1、Windows 8.1 和 Windows Server 2012 R2 的汇总
2975331 2014 年 8 月更新汇总,适用于 Windows RT、Windows 8 和 视窗服务器 2012

状态
微软已经删除了下载链接 在调查这些问题的同时进行这些更新。

已知问题 3
Microsoft 正在调查系统可能出现的行为 在任何 已安装以下更新:
2982791 MS14-045:描述 内核模式驱动程序的安全更新:2014 年 8 月 12 日
2970228 更新以支持俄罗斯卢布的新货币符号 窗户
2975719 Windows RT 8.1 的 2014 年 8 月更新汇总,Windows 8.1 和 Windows Server 2012 R2
2975331 Windows RT、Windows 8 和 Windows Server 2012 的 2014 年 8 月更新汇总

这种情况可能是 持久性,并可能阻止系统正确启动。

状态
Microsoft 已删除这些更新的下载链接,同时 这些问题正在调查中。

【讨论】:

【解决方案7】:

问题似乎与 8 月 13 日安装的 Windows 更新有关。 我尝试按照上一张海报的建议卸载 KB2982791,但这并没有解决问题。 然而,从 8 月 13 日卸载 所有 Windows 更新确实解决了问题。

【讨论】:

    【解决方案8】:

    Windows 7 上的 CodeGear Delphi 2009 也是如此

    在 Windows 更新 2982791 2970228 之后卸载将无济于事。

    之后使用 IDE Fix Pack 会有所帮助。

    【讨论】:

      【解决方案9】:

      dzEditorLineEndsFix - Cannot create file %Temp%\EditorLineEnd.ttr

      这是一个小程序,它修复了由 Delphi 2006 到 2010 的 Windows 更新 KB2982791 引入的导致错误“无法创建文件 %Temp%\EditorLineEnds.ttr”的问题。 它通过在创建文件时将文件移动到其自己的唯一子目录来工作。

      【讨论】:

        【解决方案10】:

        我使用的是 Windows 8,而不是 8.1

        我关闭了所有 Windows 更新,昨天我检查了更新并安装了所有安全更新。今天我遇到了同样的问题,但是我的笔记本上没有安装上述更新。 我查找了所有这些,但在安装的安全更新之间没有找到任何内容:

        KB2982791、KB2970228、KB2975719、KB2975331

        但我发现另一个更新KB2993651并尝试卸载它,卸载过程停止。我重置了我的补偿。现在找不到这个更新了,问题也没有解决。

        所以没有找到另一种解决方法并创建了以下脚本,我在打开 RAD 2010 之前运行。

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

        我正在使用 %RANDOM% 函数,因为在第二次使用固定名称时,重命名的文件也会被锁定,并且脚本在重命名时不会成功。

        【讨论】:

          猜你喜欢
          • 2020-07-02
          • 2017-01-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多