阻止Windows 7在USB 3.0集线器上启用节能功能


14

我在台式计算机上安装了USB 3.0集线器。

我使用它来连接外部USB 3.0磁盘以进行备份,但是我遇到一个问题:Windows 7默认为该集线器启用省电功能,这会导致磁盘在密集的I / O操作期间断开连接(例如,我的计划备份为8)下午)。

我可以通过以下操作禁用此设置:
转到设备管理器>在集线器上右键单击>属性>电源管理>取消选中允许计算机关闭此设备以节省电源

太糟糕了,每次我重新启动计算机时,都会再次选中该框。有没有办法永久禁用此设置?

编辑:我用上面的设置的实际英文名称编辑了我的问题(之前不太清楚)。

编辑彼得·菲茨杰拉德 Peter Fitzgerald)的答案恰好描述了我到目前为止所做的事情。每次重新启动复选框时,都会再次标记该复选框,我正在寻找一种永久禁用它的方法。

编辑:在阅读 Synetech答案后,我能够找到更改设置时更改的注册表项,即:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\FLUSB\ROOT_HUB_FL30\5&f0b5d82&1\Device Parameters\WDF\IdleInWorkingState (DWORD)

每当我取消选中复选框以及通过进程System停用和重新激活设备时,管理控制台都会更改此密钥。太糟糕了,授权中的任何设置都会被错误地忽略,甚至通过拒绝所有人的每个特权,密钥也始终设置为1。

我尝试在线搜索,并找到了本Microsoft指南。尝试设置他们描述的每个键都无济于事,看来这些键已被忽略。我甚至试图复制在正确的道路从现有的按键.INF发现网上(下把该键/WDF和按键父下放),像这样,但我什么也没得到。

其他有用的信息:

  • 在下HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\FLUSB\ROOT_HUB_FL30\,我也有两种声音:5&f0b5d82&05&21f33a01&0,这似乎反映了上面键的配置。IdleInWorkingState但是,唯一的变化是上述变化。
  • 当我手动编辑寄存器时,“设备管理器”中复选框的值不会更改,必须将其缓存在某个位置。


@ and31415:不,不是。我不得不在很早以前就禁用它,但是重启后它仍然保持这种状态。
scristalli 2014年

这是否设置为“禁用”:控制面板->电源选项->更改计划设置->更改高级电源设置-> USB设置-> USB选择性挂起设置。
harrymc

@harrymc,如果您阅读上面的2条评论,您会发现我已经禁用了它。
scristalli

USB3是什么牌子的?矿山根本没有“电源管理”选项卡,也永远不会完全关闭电源。
harrymc 2014年

Answers:


6

电源要求

我在台式计算机上安装了USB 3.0集线器。我使用它连接外部USB 3.0磁盘以进行备份,但是我遇到一个问题:Windows 7默认为该集线器启用省电功能,这会导致磁盘在密集的I / O操作期间断开连接

您确定驱动器正在关闭电源管理,而不仅仅是因为它试图消耗过多功率?您可以通过设备管理器检查USB集线器上的功耗(图1和2)。验证集线器每个端口可提供的功率足以满足外部驱动器的需求。否则,您可以使用USB Y适配器(图3和图4)从两个端口供电。(高画质外部驱动器通常带有专门用于此目的的Y适配器,因此请仔细检查该框和手册。)

追踪疾病

我可以通过以下操作禁用此设置:转到设备管理器>在集线器上右键单击>属性>电源管理>取消选中允许计算机关闭此设备以节省电源

太糟糕了,每次我重新启动计算机时,都会再次选中该框。有没有办法永久禁用此设置?

如果禁用该设置确实可以解决当前的问题,那么现在的问题是使它卡住而不是还原。一种选择是使用诸如Process Monitor之类的东西,并将过滤器设置为相关的注册表项(HcDisableSelectiveSuspend),以查看是什么程序对其进行了更改,以便关闭该选项(应将其设置1禁用电源管理)。

那将是理想的方法,因为它可以追踪设置还原的实际原因。不幸的是,这只能找到原因。实际修复它可能并不容易,甚至不可能。例如,Windows可能会在关机时自动将其还原,或者更有可能在检测到硬件时将其在启动过程中设置为默认值。

定义“设备”;检查USB端口

顺便说一句,您是否将驱动器插入其他USB端口?至于Windows正在而言,“已知装置”是一个配对设备+端口,因此,如果您之前已经将一台设备到端口A,并让Windows安装驱动程序,那么你以后插上节省设备进港B, Windows会将其视为新设备,并为其(重新)安装驱动程序以及默认设置。因此,将其插入新端口时,必须重新设置所有设置。之后,Windows应该记住新端口和旧端口的设置。您可能希望将驱动器一次插入每个USB端口并对其进行配置,以确保将来无论它们插入哪个端口,它们都已全部配置。(对于驱动器号也是如此,但是由于可移动卷中驱动器号的短暂特性,它们的可靠性往往会降低一些。

治疗症状

阻止Windows还原设置的一种方法是简单地拒绝对设置的访问。这需要使用注册表编辑器,如果您不小心的话,这可能会带来风险,因此请采取常规的备份预防措施,并在进行更改之前仔细检查(尤其是删除任何内容时,无论如何都不要这样做)。

  1. 首先,您需要找到相关的设备ID:

    1. 设备管理器中打开集线器的“ USB根集线器属性”对话框(图1),然后切换到“ 电源管理”选项卡
    2. 更改的值Allow to turn off复选框(没关系什么,只是改变它),但点击OK(图5)
    3. 运行Process Manager并设置一个过滤器(图6):
      1. Ctrl+L
      2. 设置PathcontainsDisableSelectiveSuspendInclude
      3. 请点击 Add
      4. 设置另一个过滤器OperationcontainssetvalueInclude
      5. Add
      6. 请点击 OK
    4. 清除当前捕获(Ctrl+ X)并开始(Ctrl+ E)(如果尚未运行)
    5. 切换回设备管理器对话框,然后单击OK
    6. 切换回Process Monitor并停止捕获(Ctrl+ E
    7. GUID之后记下四位数的设备ID (图7);在此示例中0055

      HKLM\System\CurrentControlSet\Control\Class\{36FC9E60-C465-11CF-8056-444553540000}\0055\HcDisableSelectiveSuspend
      
  2. 单击过程监视器中的行,按Ctrl+ J打开Regedit并直接导航到该键(如果不起作用,请打开Regedit并手动导航到该键)

  3. 将设置配置为您希望的最后一次设置(取消选中“ 电源管理”选项卡中的复选框,然后单击“确定” OK

  4. 现在锁定该设置并阻止对该键的访问(图8):

    1. 右键单击Regedit左窗格中的键
    2. 选择权限
    3. 请点击 Advanced
    4. 联合国 -检查Inherit from parent框,然后点击CopyOK
    5. 返回常规(非高级)权限对话框,单击顶部列表中列出的每个组和用户,对于每个组和用户,取消Full Control选中底部列表中的框

现在,没有人,不是您,甚至系统本身都无法修改设置(但他们仍然可以读取它),因此在将其设置为只读之前,它应始终保持您设置的状态。(如果需要,可以通过在“ 高级安全设置”对话框中删除特定于项目的权限并重新选中该Inherit from parent框来恢复写访问权限。

当然,您之后需要重新启动以确保设置正确。

最后一招

如果驱动器仍在关闭,请尝试如上所述将其设置HKLM\System\CurrentControlSet\Services\usb\DisableSelectiveSuspend1只读。该设置在常规系统中不存在,也没有HcDisableSelectiveSuspend 这样记录在文件中(对此的唯一引用是在社区页面上),但是Windows似乎确实在之前查询了该值HcDisableSelectiveSuspend(图7),因此值得一试。

夏洛克·福尔摩斯

此时,如果您愿意,可以返回并诊断根本问题,而不仅仅是治疗症状。您可以使用上述过滤器在启动过程中(选项→启用引导日志记录)和关闭过程(稍微麻烦一些使 Process Monitor日志具有对注册表项的写访问权限,以准确找到正在更改的内容。然后,您可以用手指交叉,并希望有办法防止这种情况发生。


插图

图1:设备管理器中的USB集线器截图

设备管理器中USB集线器的屏幕截图

图2:USB集线器上的电源截图

USB集线器上的电源截图

图3:USB Y适配器的照片

USB Y适配器的照片

图4:USB Y适配器用法图

USB Y适配器用法图

图5:USB集线器的“电源管理”选项卡的屏幕截图

USB集线器的“电源管理”选项卡的屏幕快照

图6:必要的过程监视器过滤器

所需的过程监视器过滤器的屏幕截图

图7:Process Monitor结果中相关注册表项的屏幕截图

Process Monitor结果中相关注册表项的屏幕快照

图8:将注册表项设置为只读的流程图

将注册表项设置为只读的流程图


首先,感谢您的出色回答,对于奖金而言,它肯定处于领先位置。我遵循了您的建议,即使我发现了其他详细信息,问题仍未解决。我相应地编辑了问题,希望您能从我的编辑中获得更多信息。
scristalli 2014年

2

进入设备管理器,在“通用串行总线控制器”下展开树形列表,右键单击该设备的条目,然后选择属性。

在此处输入图片说明

转到属性对话框中的“电源管理”选项卡,然后取消选中“允许计算机关闭此设备以节省电源”的框。

在此处输入图片说明

如果您使用的是笔记本电脑,则可能还需要进入高级电源计划设置,并禁用允许Windows在不使用设备时切断其电源的选项。


感谢您的回答。很抱歉,如果我的问题不清楚(我使用意大利语的Win 7,并且尝试进行即时翻译),但是到目前为止,这确实是我一直在做的事情。
scristalli 2014年

我编辑了问题。再次感谢,但是解决方案似乎并不容易。
scristalli 2014年

2

由于其他解决方案均无效,因此我通过以下解决方法解决了问题:

Powershell脚本禁用设置

编辑在Internet上找到的脚本,我建立了这个脚本:

C:\ powerMgmt.ps1

$hubs = Get-WmiObject Win32_USBHub
$powerMgmt = Get-WmiObject MSPower_DeviceEnable -Namespace root\wmi | where {$_.InstanceName.Contains($hubs.PNPDeviceID)}

foreach ($p in $powerMgmt)
{
    $p.Enable = $False
    $p.psbase.Put()
}

在启动时以提升的特权执行

上面的脚本需要提升的特权,因此当我与用户登录时,我在Windows 7的任务计划程序中创建了一个任务以运行以下脚本(以用户Administrator身份):

C:\ powerMgmt.cmd

powershell -file C:\powerMgmt.ps1

整个过程有点麻烦。它不是很优雅,并不能帮助我理解问题,但是可以解决。


0

您将要编辑注册表。

  1. 打开regedit.exe并以管理员身份运行。

    a)单击开始>然后在搜索框中键入regedit>右键单击regedit.exe>选择“以管理员身份运行

  2. 展开[HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \

    a)右键单击服务>将鼠标悬停在“新”上,然后选择“键”

    b)输入“ USB”

    c)导航到“ USB”>右键单击USB

    d)将鼠标悬停在“新建”上,然后选择“ DWORD(32位)值

    e)将默认值更改为“ DisableSelectiveSuspend”

    f)选择DisableSelectiveSuspend>单击“编辑”>“修改”

    g)在“数值数据:“>下将0更改为1>单击确定。

  3. 重新启动计算机。您的问题应该得到解决。

如果您不满意,请编辑注册表。您可以打开记事本,然后将以下文本剪切并粘贴到记事本中,然后使用任何名称保存文件,例如说“ temp.reg”,它必须具有“ .reg”扩展名而不是“ .txt”扩展名。如果将文件保存在“文档”文件夹中,则需要双击Windows资源管理器中的文件,然后将为您创建注册表值。这是粘贴到记事本中的文本,包括行之间的所有内容。


Windows注册表编辑器版本5.00

[HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ services \ USB]“ DisableSelectiveSuspend \”“ = dword:00000001


如果您使用.reg文件方法,请重新启动计算机,然后应解决您的问题。


感谢您的尝试,但没有成功。
scristalli

0

您可能会尝试完全删除驱动程序并清除过时的USB信息:

  1. 转到设备管理器,打开“通用串行总线控制器”,右键单击USB Root Hub并选择“卸载”。

  2. 使用regedit删除HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\FLUSB
    如果出现权限错误,请参阅 如何完全控制Windows注册表项(包括注释)。免费的RegOwnit实用程序可能会有所帮助(我本人从未使用过)。

  3. 重启。

首先创建一个系统还原点,以防万一。

另一个解决方案是使用较旧的驱动程序,可以将其与上述过程结合使用。

这是我找到的两个:
3.5.36.0,A01
Fresco Logic USB 3.0驱动程序3.5.93.0


0

您可以设置多种不同的电源管理方案,但已选择一种(例如“平衡”或“高性能”)。Windows可能正在加载您选择的电源管理方案,并且那里可能没有禁用USB电源管理。

在开始菜单中,键入“编辑电源计划”,然后选择开始菜单所找到的选项。还有一些其他方法可以访问此窗口,例如通过设置屏幕保护程序的个性化设置。

在那里,您需要“更改高级电源设置”。

然后转到“ USB设置”,然后转到“ USB选择性挂起设置”,然后在此处更改设置。

这是其他人撰写的有关您的问题的文章。其中有类似的说明和图片。


感谢您的回答,但是尽管我不确定在这里是否提到过,但这是我尝试的第一件事。没用 当前唯一有效的解决方案是我发布的解决方案,Powershell脚本在登录时禁用了该设置。
scristalli
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.