包含登录会话 ID 的 %TEMP% 文件夹意外删除

本文提供了有关在安装了桌面体验的 Windows Server 中删除包含登录会话 ID 的 %TEMP% 文件夹的问题的解决方法。

适用于: Windows Server 2022、Windows Server 2019
原始 KB 数: 4506040

现象

在安装了桌面体验的 Windows Server 中,如果已登录到计算机超过七天, 则会删除包含会话 ID 的 %TEMP% 文件夹。 因此,某些必须访问 %TEMP% 的应用程序在该时间后无法正常工作。

若要确定 %TEMP% 文件夹路径并验证是否已删除该文件夹,请运行以下命令。 显示示例输出。

C:\Users\Administrator>set TEMP
TEMP=C:\Users\ADMINI~1\AppData\Local\Temp\1
C:\Users\Administrator>dir %TEMP%
Volume in drive C has no label.

Volume Serial Number is C861-D3EF

Directory of C:\Users\ADMINI~1\AppData\Local\Temp

File Not Found

在以下情况下,你不会遇到此问题:

  • %TEMP% 文件夹不包括登录会话 ID。 例如,C:\Users\<User Account>\AppData\Local\Temp
  • %TEMP% 文件夹不为空。
  • 没有人登录到服务器,或者任何用户会话在七天内结束。

%TEMP% 文件夹由 SilentCleanup (cleanmgr.exe) 或存储感知 (storsvc.exe) 删除

此行为是特意这样设计的。

当登录会话超过七天时,SilentCleanup 任务 (cleanmgr.exe) 将删除 %TEMP% 文件夹。 SilentCleanup 计划每天与自动维护一起。

启用存储感知(storsvc.exe)后, 可能会删除 %TEMP% 文件夹。 存储感知默认处于禁用状态,但当 C 驱动器耗尽可用空间时,可能会启用它。

若要解决此问题,请执行以下步骤:

  1. 从文件夹值中删除 %TEMP% 条目(建议)或修改 LastAccess 值
  2. 禁用存储感知(如果已启用存储感知)。
  3. 禁用低可用磁盘空间警告
  4. 使用组策略禁用存储感知(仅限 Windows Server 2022)。

步骤 1:从文件夹值中删除 %TEMP% 条目或修改 LastAccess 值

删除 %TEMP% 条目(建议)

  1. 打开“注册表编辑器”。 依次选择“开始”>、“运行”,键入“regedit”,然后选择“确定”

  2. 找到并选择以下注册表子项:

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VolumeCaches\Temporary Files

  3. 右键单击“ 文件夹”,然后选择“ 修改”。

  4. “值”数据 框中,删除 %TEMP% 条目,然后选择“ 确定”。 例如:

    编辑前的值:

    %TEMP%|%WINDIR%\Temp|%WINDIR%\Logs|%WINDIR%\System32\LogFiles

    编辑后的值:

    %WINDIR%\Temp|%WINDIR%\Logs|%WINDIR%\System32\LogFiles

  5. 退出 注册表编辑器

注意

进行此配置后,必须手动删除 %TEMP% 文件夹以避免耗尽可用空间。

也可以修改 LastAccess 值。

修改 LastAccess 值

注意

对于 Windows Server 2019,请先安装 4 月累积更新 ,然后执行以下步骤。

  1. 打开“注册表编辑器”。 依次选择“开始”>、“运行”,键入“regedit”,然后选择“确定”

  2. 找到并选择以下注册表子项:

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VolumeCaches\Temporary Files

  3. 右键单击 LastAccess,然后选择“ 修改”。

  4. “值”数据 框中,键入一个以天为单位的值。 默认值为 7。 可以设置的最大值是从 1601 年 1 月 1 日起到现在的天数。

  5. 退出 注册表编辑器

注意

进行此配置后,LastAccess 值控制cleanmgr.exe删除所有临时文件夹中的文件的时间段如果 LastAccess 值设置得太高,则可能耗尽可用空间。

除了 cleanmgr.exe 设置之外,还对存储感知进行以下设置。

注意

为存储感知配置后,请注意不要耗尽 C 驱动器上的可用空间。

步骤 2:禁用存储感知(如果已启用存储感知)

  1. 转到“启动>设置>系统>存储”。
  2. 关闭 存储感知
  3. 退出 设置

步骤 3:禁用低可用磁盘空间警告

当 C 驱动器耗尽可用磁盘空间时,可能会启用存储感知。 可以使用以下步骤禁用低可用磁盘空间警告:

  1. 打开“注册表编辑器”。 选择“开始>运行”,键入 regedit,然后选择“确定”。

  2. 找到并选择以下注册表子项:

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer

  3. 转到“编辑”,然后选择“新建>DWORD 值”。

  4. 输入 NoLowDiskSpaceChecks ,然后按 Enter。

  5. 右键单击 NoLowDiskSpaceChecks 值,然后选择“ 修改”。

  6. “值数据”框中键入 1,然后选择“确定”。

  7. 关闭注册表编辑器

  8. 重新启动计算机。

步骤 4:仅使用组策略禁用存储感知(仅限 Windows Server 2022)

对于 Windows Server 2022,还需要使用组策略禁用存储感知,如下所示:

  1. 打开 组策略编辑器。 选择“开始>运行”,键入 gpedit.msc,然后选择“确定”。

  2. 找到以下策略:

    计算机配置>管理模板>系统>存储感知

  3. 编辑“允许存储感知”策略已禁用

  4. 关闭 组策略编辑器

参考

有关存储感知的详细信息,请参阅 使用存储感知管理驱动器空间。