临时目录可用空间不足5gb

2025-01-23 04:40:55
相孟怜
冶金VPS

解压大文件提示内存不足

在这种情况下,不要直接复制压缩包。
首先打开WinRAR,在参数设置中选择“路径”,将临时解压路径设置为剩余空间较大的非系统分区,并且“仅适用于可移动存储”。
磁盘“选项”,然后在下载游戏时,右键单击游戏文件,选择“解压到”,然后设置解压目标。

解决崩坏3安装器报空间不足的问题

今天我尝试安装一款名为《崩坏3》的游戏,但在安装过程中遇到了磁盘空间不足的问题。
虽然电脑的两个硬盘其中一个还剩700GB左右的空间,另一个还不到3.4TB,但显然有足够的空间来安装游戏。
因此,我们首先考虑的是,问题可能不是由于磁盘空间不足造成的。
为了更深入地研究这个问题,我使用了 x64dbg 调试工具。
在搜索包含关键字“space”的字符串时,我发现几个以“message”开头的字符串与错误弹出窗口相关。
在这些字符串上设置断点,再次运行安装程序,发现确实因为临时目录空间不足而断点。
根据这些字符串的名称,我们可以假设它们与临时目录中的空间不足有关。
我的临时目录在磁盘上,磁盘默认分配了8GB的空间。
我最初怀疑是某个无良程序把临时目录填满了,导致磁盘空间不足。
但经过调查发现,存储盘还远远没有达到最大容量,所以这似乎不是问题所在。
由于磁盘空间问题不是由磁盘空间不足引起的,因此我开始对导致错误的代码进行逆向工程。
发现错误弹出窗口与确定是否有足够磁盘空间的功能有关。
再次运行安装程序并设置断点。
确定触发了跳转指令,表示如果有足够的空间,则进行跳转以避免显示弹窗。
进一步分析发现,该函数的执行逻辑是计算释放空间的double值,并与某个阈值进行比较。
通过分析汇编代码,我们发现关键的比较发生在rax和rbx寄存器之间。
对比结果显示,当磁盘空间不足时,弹出窗口提示磁盘空间不足,反之则提示磁盘空间不足。
所以问题可能出在计算剩余空间的逻辑上。
为了检查这一推测,我突出显示了 Rax 寄存器,并在函数调用之前在执行路径中设置了一个断点。
通过动态调试,发现函数返回前rbx的值与最终剩余空间的值相同,这说明rbx记录了函数执行过程中剩余空间的信息。
进一步分析发现,函数内部改变了rbx的值,改变前的值记录在rcx寄存器中。
因此,我假设rcx指向一个包含剩余空间信息的地址。
为了证实我的假设,我观察到函数执行过程中向该地址写入了一个新值,表明剩余空间信息被正确计算并保存。
通过进一步的动态调试,我发现检索的关键函数GetDiskFreeSpaceExW 是剩余空间信息。
在虚拟机中我验证了正常情况下这个函数正确返回剩余空间信息。
回到实际环境,我设置断点,分析了一下,发现有一个条件判断导致函数在错误情况下跳过了剩余空间计算步骤。
通过进一步分析,确定问题原因是GetVolumePathNameW函数在处理存储磁盘时返回错误结果,导致后续逻辑错误判断磁盘空间不足。
为了解决这个问题,我使用 Detours 和 version.dll 实现了 DLL 注入,并通过自定义函数处理 GetVolumePathNameW 调用来避免该问题。
将生成的version.dll放在与安装程序同一目录下,再次运行安装程序后,问题完美解决。
为了帮助其他遇到类似问题的用户,我在 GitHub 上开源了这个解决方案。
请随意查看和使用它们。

360浏览器一下载就提示临时目录所在磁盘空间不足

这是因为您设置的用于存储软件的磁盘空间已满。
例如, 如果您现在设置驱动器号,则可以将其更改为驱动器 E。