我的 Windows 7 运行在一个小的(40GB)分区上,内存为 4GB。这意味着 Hibernate 创建的 hiberfil.sys 文件占用了很大一部分可用磁盘空间。我想删除它。
我知道我可以通过输入powercfg -h off
提升的命令提示符来禁用 Hibernate 并删除 hiberfil.sys。这有效 - 文件被立即删除,并且执行此操作后,密钥HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Power\HibernateEnabled
(正确)设置为 0。
但是,下次我重新启动 PC 时,hiberfil.sys 又恢复了,Hibernate 重新启用,并且该注册表项已返回到 1。
我对此几乎束手无策。我在网上找到的有关删除 hiberfil.sys 文件的所有信息几乎都只是建议使用 powercfg 关闭休眠模式,这似乎对几乎所有人都有效。但它总是回来找我!(就像吸血鬼一样,吸干我的磁盘空间。)我确实发现另一个主题来自似乎遇到过相同问题的人,但那里的所有建议对原始发帖者(或我)都不起作用。不过,我还是尝试了那里列出的所有方法,包括:
禁用混合睡眠
通过命令提示符、电源选项 GUI 以及两者(按两种顺序)禁用休眠模式
手动更改
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Power\HibernateEnabled
密钥几乎我能想到的所有其他东西!
我确实想重申一下,删除文件没有问题——效果很好。每次重启后它都会恢复。我准备放弃,每次登录时运行一个脚本来禁用 Hibernate,尽管这看起来像一个疯狂的黑客“解决方案”……但我希望这里有人可以首先提出其他建议。
答案1
我的 Windows 7x64 安装在 Mac 笔记本电脑的 SSD 分区上。我已禁用powercfg /h 关闭(已提升)和 ms fixit 禁用休眠,以及将注册表项 HibernateEnable 值设置为 0。只有在重新启动后,Hiberfil.sys 才会被删除。当我启动本机 hiberfil.sys 时,它始终会重新创建,但当我在 OS X 和 VMware Fusion 内启动时,休眠保持禁用状态,这是应该的。
Tom Wijsman 建议使用具有启动日志功能的 ProcessMonitor,这帮助我发现虚拟机工具(来自 VMware)在本机启动期间重新启用注册表项。我尝试在 regedit 中更改权限,但它们没有阻止将值更改为 1。我考虑创建一个小的 hiberfil.sys,但我认为这会被覆盖。
作为 99% 的解决方案,我将 HiberFileSizePercent 值更改为十进制 1,这使得 hiberfil.sys 在 8GB RAM 机器上只有 80MB。我想我可以尝试 .001 或更少,但 80MB 并不多。
答案2
您可以使用以下方法轻松解决问题进程监控。
启动并启用启动日志在里面选项菜单,重新启动计算机并启动进程监视器。
然后让它停止捕捉,然后搜索HibernateEnabled
并检查是什么改变了值。
为了获得更高级的见解,也可以使用 Windows 性能工具包中的 XBootMgr 来完成此操作。
答案3
如果您正在使用 boot camp 和 vmware fusion:
查找文件
%programfiles%\VMware\VMware Tools\plugins\vmsvc\disableGuestHibernate.dll
并将其删除或移动。
最后,通过打开管理员提升的命令提示符并运行以下命令一劳永逸地禁用休眠模式:
powercfg -h off
disableGuestHibernate 插件在 vmware tools 加载时加载。如果在虚拟机中运行时加载 vmware tools,它将禁用休眠功能(因为 vmware 有自己的挂起系统,使休眠功能变得多余。)但如果在虚拟机之外加载 vmware tools(即您使用 boot camp 启动到 Windows),它将重新启用已禁用的休眠功能。
答案4
我也遇到了同样的问题。尝试过:
powercfg –H OFF
Set HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Power\HibernateEnabled
将所有电源选项设置Control Panel\All Control Panel Items\Power Options\Edit Plan Settings
为“从不”。
该文件不断恢复。使用进程监视器的建议对我有用。我使用的系统安装了“Pointsec for PC”,prot_srv.exe 进程不断重置此值。鉴于这台电脑被这个软件锁定,我无能为力。