如何在 Windows 7 中禁用某些服务在安全模式下运行但在正常启动中运行

如何在 Windows 7 中禁用某些服务在安全模式下运行但在正常启动中运行

我有以下问题。如何仅在安全模式下禁用某些服务 - 它们必须在正常启动时运行,但不能在安全模式下运行。我们谈论的是 Win 7 64 位。问题是计算机在正常模式下正常启动,但当您尝试在安全模式下启动时在登录屏幕重新启动,我进行了干净启动并发现在安全模式下登录一切正常,因此某些服务(尚未确定)依赖于未运行的其他服务并导致系统崩溃。如果我必须在正常启动下运行所有​​服务,这是完全正常的,没问题,但它们应该在安全模式下被禁用(除了最低限度)。所以我想禁用并阻止某些服务在仅在安全模式下启动。此致。

答案1

查看注册表中的

HKLM\SYSTEM\CurrentControlSet\Control\SafeBoot

此注册表项是 Windows 确定在启动到安全模式 ( Minimal) 或带网络连接的安全模式 ( Network) 时要加载哪些服务的方式。这两个注册表项下的所有子项均代表 中记录的系统服务名称HKLM\SYSTEM\CurrentControlSet\Services

如果您想在安全模式下停止运行某个服务,只需将其从Minimal注册表项中删除即可。如果您想添加服务,请找到它的名称HKLM\SYSTEM\CurrentControlSet\Services,然后按照其他现有注册表项提供的示例添加它。

例如,如果您需要 Windows Installer 服务在安全模式下运行(我以前就遇到过这种情况),您可以添加一个名为msiserverunder的键Minimal并将其默认值设置为Service。下次启动到安全模式时,Windows Installer 服务将运行。

这里不用多说,但请确保在进行更改之前备份密钥。

答案2

您所说的问题可能无法解决。

因此,我建议从后往前看:如何仅在正常启动时启用某些服务。

答案是禁用这些服务,但创建一个.bat在启动时运行的脚本并启动它们。在安全模式下启动时,此脚本不会运行。

脚本中使用的命令是 净启动 每项服务。

这比较简单而且我认为这是可行的。

答案3

您可以尝试这个 powershell 脚本,它在 powershell v5.1 上测试过,请在任务计划程序上创建一个在启动后运行此脚本的任务:

    function Disable_Process( [Parameter(Mandatory=$true)][string]$process_name ) {

        $machine_state = Get-WmiObject win32_computersystem | Select-Object  -ExpandProperty BootupState

        if ( $machine_state -match "Fail-safe boot"  ) {

            Stop-Process -Name "$process_name" -Force

        }  elseif ( $machine_state -match "Fail-safe with network boot") {

            Stop-Process -Name "$process_name" -Force

        }

        Write-Host "Process(es) stopped:"
        Get-Process | Where-Object {$_.HasExited} | Out-File C:\processes_stoped.txt

    }

    Disable_Process "process_name_you_want_to_stop" #You can repeat this line as many times as necessary

如果您想检查真正的服务名称,您应该运行“services.msc”,然后单击该服务,然后单击属性并复制字段“服务名称”。

相关内容