Delphi 2006-2010错误:“无法创建文件C:\ Users \ Admin \ AppData \ Local \ Temp \ EditorLineEnds.ttr”

时间:2014-08-13 20:56:51

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

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

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

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

我试过没有运气重新安装程序。

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

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

  1. 将Temp Directory重命名为我知道具有完全安全权限的目录。启动Delphi时会在此目录中创建文件,但是EditorLineEnds.ttr仍然会被SYSTEM锁定并阻止我重新启动。
  2. 卸载了以下安全更新KB2982791和KB2976897,但这并未解决问题。我暂时禁止了Windows更新,并尝试卸载8/13的所有安全补丁。
  3. 完全卸载Delphi并重新安装。重新安装所有内容后仍然会出现问题。
  4. 我将尝试从头开始重新安装Windows并在Windows之前安装Delphi 更新以查看更新是否真的是原因。我现在的解决方法是在启动Delphi之前重命名EditorLineEnds.ttr。

10 个答案:

答案 0 :(得分:42)

我知道有三种解决方案:

  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没有这个缺点,但无论如何谁使用该选项?)
  4. 注意:Microsoft在几天后撤回了此修复程序,并在2014-08-27发布了新的KB2984615。不幸的是,这并没有解决我的问题。也许首先卸载KB2982791然后安装KB2984615可能会有效,但我还没试过。

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

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

    Binary download

    源代码可用from sourceforge

答案 1 :(得分:6)

这是我在Win7-64bit系统上运行Delphi2006的bds_start.bat脚本。我定制了GabeMeister的答案和其中一个链接中找到的类似脚本。我现在可以重新启动DelphiIDE而无需重启。所有ttr临时文件仍然被系统锁定,因此 del 命令可能无法正常工作。一旦系统重新启动,它们就可以删除。

然而,重启Delphi双击myproject.dpr项目文件是不可能的。我害怕为D2006安装IDEFixPack因为其中一条评论没有保证它能够正常工作。

<强> 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文件,运行并通过原始bds_original.exe文件的cmd参数。这应该启用* .dpr双击重启。或者使用BdsLauncher.exe,我认为它是regedit链接到* .dpr扩展名。然后进程列表有bds.exe名称。

答案 2 :(得分: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,所以新的更新不会   再次安装

答案 3 :(得分:3)

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

IDEFixPack.DisabledPatches = DotNet.GlobalizationSearch

重新启动,它应该工作。 我有两个桌面与Win 8.1 Pro,它的工作就像一个魅力!

答案 4 :(得分:2)

只是要指出KB2982791更新已被Microsoft撤销。引用的原因似乎是字体渲染和系统崩溃的问题,而不是这个特定的问题,从表面来看,它似乎确实是Delphi的错误,而且只是因为更新而加剧了。

Microsoft网站上的知识库文章已更新: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和Windows的更新汇总   Windows Server 2012

     

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

     

已知问题3
  微软正在研究系统可能采取的行为   在任何一个之后发生0x50 Stop错误消息(bugcheck)崩溃   安装了以下更新:
  2982791 MS14-045:描述   内核模式驱动程序的安全更新:2014年8月12日
  2970228   更新以支持俄罗斯卢布的新货币符号   视窗
  2975719 2014年8月Windows RT 8.1,Windows的更新汇总   8.1和Windows Server 2012 R2
  2975331 2014年8月Windows RT,Windows 8和Windows Server 2012的更新汇总

     

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

     

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

答案 5 :(得分:1)

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

答案 6 :(得分:1)

如果你在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"

答案 7 :(得分:1)

Windows 7上的CodeGear Delphi 2009也是如此

卸载以下Windows更新2982791 2970228不会有帮助。

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

答案 8 :(得分:1)

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

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

答案 9 :(得分:0)

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

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

KB2982791,KB2970228,KB2975719,KB2975331

但是我发现了另一个更新 KB2993651 ,并试图将其卸载,卸载过程暂停。我重置我的comp。现在我无法找到这个更新,问题没有解决。

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

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

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