Реестр Windows Восстановление значений запуска системных служб по умолчанию.

Переводчик Google

Тоже давно использую скрипт для извлечения состояния служб и их конфигурации.
Скрипт изначально был написан еще под Windows 7, но позже был переделан под Windows 10 и тестировался только на Windows 10 Pro.

Имеет интерактивную часть. Умеет извлекать состояния запуска служб из системы, сохраняя в текстовый файл-список в папке скрипта.
Также умеет применять к системе выбранную интерактивно конфигурацию из соответствующего файла из папки скрипта.

Каждая строка данного файла относится к конкретной службе.
Строки состоят из подстрок разделенных пробелами, где первая подстрока - имя службы(заключено в кавычки), вторая - состояние запуска, все остальные - комментарий (необязательная).
В целом на строку распространяются правила командной строки, так как по сути это и есть набор параметров командной строки.
Строки, первым символом в которых стоит пробел или # пропускаются, поэтому могут быть использованы для комментариев.
Вторая подстрока может принимать такие значения: boot, system, auto, delayed-auto, demand, disabled, delete.
(delete - удалит сервис из системы)

Переменная "TypeThreshold" отвечает за порог, службы имеющие тип ниже которого не обрабатываются во время извлечения конфигурации.
По умолчанию значение установлено "2", исключая таким образом из обработки драйвера.
0x1 - KERNEL_DRIVER
0x2 - FILE_SYSTEM_DRIVER
0x10 - WIN32_OWN_PROCESS
0x20 - WIN32_SHARE_PROCESS
0x110 - WIN32_OWN_PROCESS (interactive)
0x60 - USER_SHARE_PROCESS TEMPLATE
0xe0 - USER_SHARE_PROCESS INSTANCE
 

Вложения

Последнее редактирование:
Тоже давно использую скрипт для извлечения состояния служб и их конфигурации.
Сделал несколько мелких исправлений, переименовал скрипт.
Дополню немного описание логики работы скрипта.
В видновс 10 (а может и раньше) в именах (идентефикаторах) служб появились маски имен для некоторых служб, что значительно усложняет задачу переноса настроек между системами и прочей автоматизации.
Да что там между системами, даже на одном компе такая маска может изменяться между обновлениями.
Данный скрипт при сохранении конфигурации пропускает все сервисы имеющие тип 0x60 (USER_SHARE_PROCESS TEMPLATE), а для сервисов типа 0xe0 (USER_SHARE_PROCESS INSTANCE) сохраняет конфигурацию, но с именем без маски.
При восстановлении конфига задействуется обратный механизм. Если имя указанное в конфигурационном файле соответствует шаблону сервиса в системе (USER_SHARE_PROCESS TEMPLATE), то параметры также применяются и к его "двойнику" (USER_SHARE_PROCESS INSTANCE) имя которого имеет маску по обыкновению.
Скрипт не предпринимает никаких действий относительно записей в конфигурационном файле, соответственно которым, установленных сервисов в системе не обнаружится.
Также добавлю конфигурационный файл состояний служб по умолчанию. Конфиг сделан на основании ранее публиковавшегося здесь файла "export_Win10.19041x64.reg" в сообщении:
Создал скрипт извлечения состояния запуска служб и частично драйверов из активной системы в твик
так как я сам переходил на 10-ку с 7-мой, где все было совсем не по дефолту.
 

Вложения

Твик для Windows 11 x64 (только для десктопа, не ноутбук!)
Восстановление состояния запуска служб по-умолчанию
Запускать через System Informer => System => Run => Start as Trusted Installer =>
Код:
reg import <ПУТЬ>\export-win11-x64.reg
 

Вложения

Последнее редактирование:
Этот PowerShell-скрипт предназначен для сброса настроек служб Windows 10 на значения по умолчанию. Вот подробное описание того, что он делает:


Основные функции:​


  1. Проверка прав администратора:
    • Убедится, что скрипт запущен с правами администратора.
    • Если права администратора отсутствуют, появляется сообщение об ошибке через графический интерфейс Windows (MessageBox).
  2. Создание точки восстановления системы:
    • Попробует создать точку восстановления системы перед внесением изменений, чтобы можно было откатить настройки в случае проблем.
  3. Подтверждение сброса:
    • Отобразит окно подтверждения пользователю с предупреждением о возможных последствиях.
  4. Сброс списка служб:
    • Скрипт содержит массив с перечнем системных служб Windows и их рекомендованных типов запуска (например, Automatic, Manual, Disabled).
    • Для каждой службы в списке устанавливается указанный тип запуска с помощью команды Set-Service.
  5. Логирование:
    • Создает лог-файл на рабочем столе с подробным отчетом о том, какие службы были успешно изменены, а какие вызвали ошибки.
    • Лог открывается автоматически после завершения работы скрипта.
  6. Отображение итогового сообщения:
    • Выводит итоговое сообщение с количеством обработанных служб, успешных и неудачных операций, а также ссылкой на лог-файл.



Состав служб:​


Скрипт настраивает широкий набор служб, которые можно разделить на категории:


  • Ключевые системные службы (например, BITS, RpcSs, Winmgmt).
  • Сетевые службы (например, Dhcp, Wlansvc, LanmanServer).
  • Службы Windows Update (например, wuauserv, UsoSvc).
  • Аудио- и мультимедийные службы (например, AudioSrv, WSearch).
  • Службы безопасности (например, WinDefend, SecurityHealthService).
  • Службы удаленного рабочего стола (например, TermService).
  • Службы печати (например, Spooler).
  • Приложения Windows Store (например, AppXSvc, ClipSVC).
  • Службы Xbox и Bluetooth.



Предупреждения:​


  1. Риск сбоев:
    • Изменение типов запуска служб может вызвать сбои в работе системы, особенно если пользователь изменяет тип запуска критически важных служб.
  2. Требования к правам администратора:
    • Скрипт не будет работать без соответствующих прав.
  3. Потенциальные проблемы:
    • Некоторые службы могут быть заблокированы политиками безопасности, или их текущий статус может быть несовместим с изменением.
  4. Точка восстановления:
    • Хотя скрипт пытается создать точку восстановления, это действие может завершиться с ошибкой, если в системе отключены соответствующие функции.



Варианты применения:​


  • Восстановление работоспособности системы после неудачных изменений в конфигурации служб.
  • Диагностика проблем, связанных с зависимостями служб.
  • Быстрая настройка служб на значения по умолчанию для новой установки Windows.


Windows 10


Код:
Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.Drawing

function Reset-Windows10Services {
    # Ensure running as administrator
    if (-NOT ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) 
    { 
        [System.Windows.Forms.MessageBox]::Show("Please run this script as an Administrator", "Error", [System.Windows.Forms.MessageBoxButtons]::OK, [System.Windows.Forms.MessageBoxIcon]::Error)
        return
    }

    # Create a system restore point
    try {
        Checkpoint-Computer -Description "Before Windows Services Reset" -ErrorAction Stop
        Write-Host "System restore point created successfully." -ForegroundColor Green
    } catch {
        Write-Host "Failed to create system restore point: $_" -ForegroundColor Yellow
    }

    # Confirmation dialog
    $confirmation = [System.Windows.Forms.MessageBox]::Show(
        "Are you sure you want to reset Windows services to their default settings?`n`nWARNING: This may affect system functionality.",
        "Confirm Reset",
        [System.Windows.Forms.MessageBoxButtons]::YesNo,
        [System.Windows.Forms.MessageBoxIcon]::Warning
    )

    if ($confirmation -eq 'No') {
        Write-Host "Service reset cancelled." -ForegroundColor Yellow
        return
    }

    # Comprehensive services list
    $services = @(
        # Windows Core Services
        @{Name="BITS"; StartupType="Automatic"},
        @{Name="CryptSvc"; StartupType="Automatic"},
        @{Name="DcomLaunch"; StartupType="Automatic"},
        @{Name="Dhcp"; StartupType="Automatic"},
        @{Name="Dnscache"; StartupType="Automatic"},
        @{Name="EventLog"; StartupType="Automatic"},
        @{Name="EventSystem"; StartupType="Automatic"},
        @{Name="LSM"; StartupType="Automatic"},
        @{Name="MpsSvc"; StartupType="Automatic"},
        @{Name="NetLogon"; StartupType="Manual"},
        @{Name="Netman"; StartupType="Manual"},
        @{Name="NlaSvc"; StartupType="Automatic"},
        @{Name="Power"; StartupType="Automatic"},
        @{Name="ProfSvc"; StartupType="Automatic"},
        @{Name="RpcEptMapper"; StartupType="Automatic"},
        @{Name="RpcSs"; StartupType="Automatic"},
        @{Name="SamSs"; StartupType="Automatic"},
        @{Name="Schedule"; StartupType="Automatic"},
        @{Name="SENS"; StartupType="Automatic"},
        @{Name="SystemEventsBroker"; StartupType="Automatic"},
        @{Name="Themes"; StartupType="Automatic"},
        @{Name="UserManager"; StartupType="Automatic"},
        @{Name="Winmgmt"; StartupType="Automatic"},

        # Network Services
        @{Name="Wlansvc"; StartupType="Automatic"},
        @{Name="LanmanServer"; StartupType="Automatic"},
        @{Name="LanmanWorkstation"; StartupType="Automatic"},
        @{Name="nsi"; StartupType="Automatic"},
        @{Name="iphlpsvc"; StartupType="Automatic"},
        @{Name="NetTcpPortSharing"; StartupType="Disabled"},

        # Windows Update and Maintenance
        @{Name="wuauserv"; StartupType="Manual"},
        @{Name="UsoSvc"; StartupType="Automatic"},
        @{Name="WaaSMedicSvc"; StartupType="Manual"},

        # Audio and Media Services
        @{Name="AudioSrv"; StartupType="Automatic"},
        @{Name="AudioEndpointBuilder"; StartupType="Automatic"},
        @{Name="WSearch"; StartupType="Automatic"},

        # Security and Authentication Services
        @{Name="SecurityHealthService"; StartupType="Manual"},
        @{Name="WinDefend"; StartupType="Automatic"},
        @{Name="WdNisSvc"; StartupType="Manual"},
        @{Name="wscsvc"; StartupType="Automatic"},

        # Remote Desktop and Remote Assistance
        @{Name="TermService"; StartupType="Manual"},
        @{Name="UmRdpService"; StartupType="Manual"},
        @{Name="SessionEnv"; StartupType="Manual"},

        # Printing Services
        @{Name="Spooler"; StartupType="Automatic"},
        @{Name="PrintNotify"; StartupType="Manual"},

        # Windows Store and App Services
        @{Name="AppXSvc"; StartupType="Manual"},
        @{Name="ClipSVC"; StartupType="Manual"},
        @{Name="PcaSvc"; StartupType="Automatic"},

        # Xbox Services
        @{Name="XblAuthManager"; StartupType="Manual"},
        @{Name="XblGameSave"; StartupType="Manual"},
        @{Name="XboxGipSvc"; StartupType="Manual"},
        @{Name="XboxNetApiSvc"; StartupType="Manual"},

        # Bluetooth Services
        @{Name="bthserv"; StartupType="Manual"},
        @{Name="BTAGService"; StartupType="Manual"},

        # Additional System Services
        @{Name="CertPropSvc"; StartupType="Manual"},
        @{Name="DeviceInstall"; StartupType="Manual"},
        @{Name="DeviceAssociationService"; StartupType="Automatic"},
        @{Name="DiagTrack"; StartupType="Automatic"},
        @{Name="WdiServiceHost"; StartupType="Manual"},
        @{Name="WdiSystemHost"; StartupType="Manual"},
        @{Name="TrkWks"; StartupType="Automatic"},
        @{Name="MSDTC"; StartupType="Manual"},
        @{Name="SysMain"; StartupType="Automatic"},
        @{Name="TimeBrokerSvc"; StartupType="Manual"},
        @{Name="W32Time"; StartupType="Manual"},
        @{Name="WinRM"; StartupType="Manual"}
    )

    # Logging setup
    $logPath = "$env:USERPROFILE\Desktop\ServiceReset_$(Get-Date -Format 'yyyyMMdd_HHmmss').log"
    $successCount = 0
    $failedServices = @()

    # Service reset loop
    foreach ($service in $services) {
        try {
            Set-Service -Name $service.Name -StartupType $service.StartupType -ErrorAction Stop
            Write-Host "Service $($service.Name) set to $($service.StartupType)" -ForegroundColor Green
            "$($service.Name) set to $($service.StartupType)" | Out-File -Append -FilePath $logPath
            $successCount++
        } catch {
            Write-Host "Failed to set service $($service.Name): $($_.Exception.Message)" -ForegroundColor Red
            $failedServices += $service.Name
        }
    }

    # Final summary message
    $summaryMessage = "Service Reset Complete!`n`n" +
                      "Total Services Processed: $($services.Count)`n" +
                      "Successfully Modified: $successCount`n" +
                      "Failed Services: $($failedServices.Count)`n`n" +
                      "A detailed log has been saved to:`n$logPath"

    [System.Windows.Forms.MessageBox]::Show(
        $summaryMessage,
        "Reset Complete",
        [System.Windows.Forms.MessageBoxButtons]::OK,
        [System.Windows.Forms.MessageBoxIcon]::Information
    )

    # Optional: Open log file
    if (Test-Path $logPath) {
        Start-Process notepad.exe $logPath
    }
}

# Call the function
Reset-Windows10Services
 
Последнее редактирование модератором:
Назад
Сверху Снизу