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

我安装了Delphi 2007后出现错误(编辑:这个问题发生在2006年至2010年的所有delphi版本),我无法弄清楚,从来没有见过。 重新启动后,我可以启动程序没有任何问题,但如果我要closures程序,并重新启动它会给我以下错误:

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

除非我重新启动,否则“系统”在这个文件上有句柄,不能被清除。 我也可以通过在启动程序之前重命名文件来纠正问题。

我已经尝试重新安装程序没有运气。

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

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

  1. 将临时目录重命名为我知道具有完全安全权限的目录。 当启动Delphi时,文件将会在这个目录中被创build,但是EditorLineEnds.ttr仍然会被SYSTEMlocking,并阻止我重新启动。
  2. 卸载了以下安全更新KB2982791和KB2976897,但这并没有解决问题。 我现在已经取消了Windows更新,并尝试卸载8/13的所有安全修补程序。
  3. 完全卸载Delphi并重新安装。 重新安装一切后仍然会出现问题。

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

我知道有三种解决scheme:

  1. 尝试卸载已由Francisco Caffagni提及的Windows安全更新KB2982791。 这解决了我的问题(Windows 8.1 + Delphi 2007),但它可能不是一个好主意,卸载Windows安全更新。
  2. 每次启动Delphi时重命名文件。 请参阅下面的简单程序,为您做。
  3. 使用Andreas Hausladen的IdeFixpack( Delphi 2007版本 ,注意版本4.4不能在Windows 8下工作 ,版本4.3似乎工作)( 对于后来的Delphi版本 )请注意,编辑器选项Show Lineends将使用不同的字符因为IDE不会再加载EditorLineEnds.ttr字体。 (解决scheme1和2没有这个缺点,但谁又使用这个选项?)

注意:Microsoft在几天后撤销了此修复程序,并在2014-08-27发布了新的KB2984615。 不幸的是,这并没有解决我的问题。 也许首先卸载KB2982791,然后再安装KB2984615可能会工作,但我没有尝试过。

我写了一个简单的程序 ,为我解决了这个问题:

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

二进制下载

源代码可从sourceforge获得 。

这是我在Win7-64bit系统上运行Delphi2006的bds_start.bat脚本。 我定制了GabeMeister答案和其中一个链接中find类似的脚本。 我现在可以重启DelphiIDE而不用重启。 所有ttr临时文件仍然被系统locking,所以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 。 也许最好的解决办法是创buildbds.exereplace工具,del / move * .ttr文件,运行并传递cmd参数到原始的bds_original.exe文件。 这应该启用* .dpr双击重新启动。 或者使用BdsLauncher.exe,我认为它是链接到* .dpr扩展名的registry。 然后进程列表有bds.exe名称。

这是另一个解决方法http://www.danielmagin.de/blog/index.php/2014/08/windows-update-disable-delphi-2007-2010/

引用:

您可以通过两种方式轻松回滚

1:用下面的行创build一个batch file
wusa / uninstall / kb:2982791
wusa / uninstall / kb:2970228
这个batch file在Windows启动时运行。 但与自动更新两个更新每次安装

2:禁用KB自动更新
更新后到WindowsUpdatesin您的系统。 禁用KB等新的更新它将不会再次安装

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

IDEFixPack.DisabledPatches = DotNet.GlobalizationSearch

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

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

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

具体来说这些部分是有意义的:

已知问题2
Microsoft正在调查在安装以下任何更新之后字体无法正确显示的行为:
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 Server 2012的更新汇总

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

已知问题3
Microsoft正在调查在安装了以下任何更新之后,系统可能会因0x50停止错误消息(错误检查)而崩溃的行为:
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 Server 2012的更新汇总

这种情况可能是持久的,可能会阻止系统正常启动。

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

这个问题似乎是在8月13日安装的Windows更新。 我试图卸载KB2982791如前面的海报build议,但是这并没有解决问题。 从8月13日卸载所有 Windows更新确实解决了这个问题。

如果你在Windows上,我创build了一个启动Delphi的batch file快捷方式。 基本上它是一个batch file,将EditorLineEnds.ttr的名称更改为当前的date时间,将其移动到不同的子文件夹,然后启动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" 

Windows 7上的CodeGear Delphi 2009也一样

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

之后使用IDE修订包将有所帮助。

dzEditorLineEndsFix – 无法创build文件%Temp%\ EditorLineEnd.ttr

这是一个小程序,解决了由Windows 2006更新KB2982791引起的问题,导致出现错误“无法创build文件%Temp%\ EditorLineEnds.ttr”。 它通过将文件移动到它自己唯一的子目录中来创build。

我正在使用Windows 8,而不是8.1

我closures了所有的Windows更新,昨天我检查了更新并安装了所有的安全更新。 今天我有同样的问题,但上述更新都没有安装在我的笔记本上。 我查找了所有这些安全更新,但未find已安装的安全更新:

KB2982791,KB2970228,KB2975719,KB2975331

但是,我发现另一个更新KB2993651,并试图卸载它,卸载过程被暂停。 我重置我的比赛。 现在我找不到这个更新,问题没有解决。

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

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

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