Служба сервера 1С осталась после удаления платформы: как убрать её из Windows
Содержание
Чтобы полностью удалить службу 1С, остановите её, узнайте точное имя в свойствах службы и выполните в командной строке от имени администратора sc delete "<имя службы>". Если службу регистрировали средствами самой 1С, её можно снять командой ragent.exe -rmsrvc из папки bin нужной версии. Чистка реестра — запасной вариант, когда команды не срабатывают.
Типичная картина: платформу удалили через «Программы и компоненты», а в списке служб по-прежнему висит «1C:Enterprise 8.3 Server Agent». Она не стартует, пишет ошибки в журнал и мешает поставить новую версию на тот же порт. Убрать её можно четырьмя способами — от безопасного отключения до правки реестра, а потом проверить, что следов не осталось.
Почему служба 1С остаётся после удаления программы
Установщик платформы снимает службу только ту, которую сам создал, и только при удалении той же версии. Во всех остальных случаях служба переживает деинсталляцию.
Частые причины:
- 🔁 Несколько версий платформы. Служба указывает на
ragent.exeверсии 8.3.22, а удалили 8.3.24. Или наоборот: удалили версию, на которую служба ссылалась, но установщик не смог её снять. - 🛠 Ручная регистрация. Администратор создавал службу командой
ragent -instsrvcилиsc create— например, второй кластер на порту 2540. Установщик про такую службу не знает. - 📦 Сервер хранилища и RAS. Службы
crserver.exe(сервер хранилища конфигураций) иras.exe(сервер администрирования) почти всегда регистрируют вручную. Их удаление платформы не трогает. - 🗑 Папку удалили руками. Каталог
C:\Program Files\1cv8\<версия>стёрли без деинсталлятора. Запись о службе в Windows осталась, а исполняемого файла уже нет. - ⛔ Сбой деинсталляции. Служба была запущена или занята, установщик пропустил шаг удаления.
Какой способ выбрать:
| Способ | Когда подходит | Риски |
|---|---|---|
| Оснастка «Службы» | Нужно временно выключить, не удаляя | Служба не удаляется, только отключается |
sc delete | Основной способ для любой службы 1С | Ошибка в имени — удалите чужую службу |
ragent -rmsrvc / crserver -rmsrvc | Службу создавали средствами 1С, файлы на месте | Нужна та же версия платформы |
| Реестр | Команды не срабатывают, файлов уже нет | Ошибка в реестре ломает Windows |
| Установщик платформы | Убрать компонент сервера целиком | Удаляет и другие компоненты версии |
Подготовка: как узнать точное имя службы 1С и что сохранить
Отображаемое имя и имя службы — разные вещи. Команды работают только с именем службы. У 64-битного сервера 8.3 оно обычно выглядит как 1C:Enterprise 8.3 Server Agent (x86-64), но при ручной регистрации может быть любым.
Найдите все службы 1С одной командой PowerShell:
Get-CimInstance Win32_Service |
Where-Object { $_.PathName -match 'ragent\.exe|crserver\.exe|ras\.exe' } |
Format-List Name, DisplayName, State, StartMode, PathName
Поле Name — это то, что нужно для удаления. Поле PathName показывает путь к исполняемому файлу и параметры запуска. По параметрам -port и -regport отличите основной кластер от дополнительного, если служб несколько.
Перед удалением сохраните:
- Каталог данных кластера. Путь к нему указан в
PathNameпосле ключа-d, по умолчанию этоC:\Program Files\1cv8\srvinfo. Внутри лежит список кластеров и зарегистрированных баз. Скопируйте папку целиком — пригодится, если сервер будут ставить заново. - Список информационных баз кластера с именами баз на сервере СУБД. Их удобно выписать из консоли администрирования серверов 1С.
- Пароль служебной учётной записи, если планируете переустановку.
Остановка службы агента обрывает все сеансы пользователей на этом сервере. Делайте это вне рабочего времени и предупредите людей заранее.
Сами базы при удалении службы не пропадают. Клиент-серверные базы живут на сервере СУБД (PostgreSQL, MS SQL), файловые — в своих каталогах.
Способ 1. Остановить и отключить службу 1С в оснастке «Службы»
Оснастка Windows не умеет удалять службы. Зато через неё удобно остановить службу, запретить автозапуск и посмотреть её параметры. С этого шага начинается любой из способов ниже.
- Нажмите
Win + R, введитеservices.msc, нажмите Enter. - Отсортируйте список по имени и найдите строки, начинающиеся с «1C:Enterprise».
- Откройте службу двойным щелчком. На вкладке «Общие» посмотрите поля «Имя службы» и «Исполняемый файл».
- Нажмите «Остановить» и дождитесь статуса «Остановлена».
- В поле «Тип запуска» выберите «Отключена», нажмите «Применить».
- Закройте окно свойств и саму оснастку «Службы».
Последний шаг не формальность. Открытая оснастка держит дескриптор службы, и sc delete потом не доведёт удаление до конца.
💡 Если удаление пока не нужно — например, сервер переносят и через неделю могут вернуть — отключённая служба безопасна. Она не стартует после перезагрузки и не занимает порты 1540, 1541 и диапазон рабочих процессов.
Если служба не останавливается и висит в статусе «Остановка», завершите процессы вручную в командной строке администратора:
taskkill /f /im rphost.exe
taskkill /f /im rmngr.exe
taskkill /f /im ragent.exe
Эти команды мгновенно убивают все рабочие процессы сервера. Несохранённые данные пользователей пропадут.
Способ 2. Удаление службы 1С через командную строку
Команда sc delete
Это основной и самый надёжный способ.
- Откройте командную строку от имени администратора: меню «Пуск», введите
cmd, правой кнопкой — «Запуск от имени администратора». - Остановите службу:
sc stop "1C:Enterprise 8.3 Server Agent (x86-64)"
- Удалите её:
sc delete "1C:Enterprise 8.3 Server Agent (x86-64)"
- Ответ
[SC] DeleteService: успехозначает, что служба помечена к удалению. Если ничего её не держит, она исчезает из списка сразу.
Имя обязательно в кавычках: в нём есть пробелы и двоеточие.
В PowerShell пишите sc.exe, а не sc. Там sc — псевдоним команды Set-Content, и вместо удаления службы вы получите пустой файл в текущей папке.
В PowerShell 7 есть отдельная команда Remove-Service -Name "<имя>". В Windows PowerShell 5.1, который встроен в Windows Server 2016–2022, её нет — используйте sc.exe delete.
Штатные ключи ragent и crserver
Если исполняемые файлы на месте, службу можно снять тем же инструментом, которым её создавали:
"C:\Program Files\1cv8\<версия>\bin\ragent.exe" -rmsrvc
"C:\Program Files\1cv8\<версия>\bin\crserver.exe" -rmsrvc
Путь берите из поля «Исполняемый файл» службы — версия должна совпадать. Ключ -rmsrvc снимает службу со стандартным именем. Для службы, созданной под нестандартным именем (второй кластер, отдельный RAS), надёжнее sc delete с точным именем.
У ras.exe своего ключа удаления нет: его службу почти всегда создают через sc create, и удаляют так же — через sc delete.
Способ 3. Как удалить службу 1С через реестр Windows
Этот путь нужен, когда sc delete возвращает ошибку, а файлы платформы уже стёрты. Все службы Windows описаны в ветке:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services
Порядок действий:
- Сохраните копию раздела службы в файл:
reg export "HKLM\SYSTEM\CurrentControlSet\Services\1C:Enterprise 8.3 Server Agent (x86-64)" C:\backup\1c-agent-service.reg
- Запустите
regeditот имени администратора и перейдите в веткуServices. - Найдите раздел с точным именем службы. Убедитесь, что параметр
ImagePathвнутри указывает наragent.exe,crserver.exeилиras.exe. - Удалите раздел целиком: правая кнопка — «Удалить».
- Перезагрузите компьютер. Без перезагрузки диспетчер служб продолжит показывать службу.
Тот же шаг одной командой:
reg delete "HKLM\SYSTEM\CurrentControlSet\Services\1C:Enterprise 8.3 Server Agent (x86-64)" /f
Удаляйте только раздел конкретной службы 1С. Соседние разделы в Services — драйверы и системные службы. Ошибка здесь может закончиться тем, что Windows не загрузится.
Если раздел не удаляется из-за прав, проверьте, что regedit запущен от администратора, и что служба остановлена.
Способ 4. Удалить сервер 1С штатным установщиком платформы
Когда задача шире — убрать с машины весь сервер 1С, а не одну запись службы, — работайте через установщик. Он снимет службу, удалит файлы и запись в списке программ.
Убрать только компонент сервера
- Откройте «Параметры» → «Приложения» или классические «Программы и компоненты» (
appwiz.cpl). - Найдите строку «1С:Предприятие 8 (x86-64)» нужной версии — номер версии указан в названии.
- Нажмите «Изменить».
- В мастере выберите изменение состава компонентов и снимите отметку с сервера 1С:Предприятия.
- Клиентские компоненты оставьте, если с этой машины ещё работают пользователи.
Удалить версию платформы без диалогов
На серверах без графического доступа удобнее тихий режим. Найдите код продукта:
$paths = 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*',
'HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*'
Get-ItemProperty $paths |
Where-Object { $_.DisplayName -match '1C|1С|Предприятие' } |
Select-Object DisplayName, DisplayVersion, PSChildName
PSChildName в фигурных скобках — код продукта. Удалите версию:
msiexec /x {КОД-ПРОДУКТА} /qn /norestart /l*v C:\backup\1c-uninstall.log
Журнал 1c-uninstall.log покажет, что именно удалено и на каком шаге возникла ошибка, если она была.
Тихое удаление снимает всю версию платформы, включая толстый и тонкий клиент. Если на сервере открыты сеансы этой версии, они оборвутся.
Проверка результата и разбор ошибок при удалении службы
Проверьте, что службы больше нет:
sc query "1C:Enterprise 8.3 Server Agent (x86-64)"
Правильный ответ — ошибка 1060 «Указанная служба не установлена». Затем убедитесь, что порты освободились:
netstat -ano | findstr ":1540 :1541"
Пустой вывод — порты свободны, новую версию сервера можно ставить на стандартные настройки.
Скрипт для массового удаления служб 1С
На серверах, где годами ставили версии поверх друг друга, служб бывает пять-шесть. Скрипт ниже находит все службы по исполняемым файлам 1С, показывает их и удаляет после подтверждения.
# Запускать в PowerShell от имени администратора
$services = Get-CimInstance Win32_Service |
Where-Object { $_.PathName -match 'ragent\.exe|crserver\.exe|ras\.exe' }
if (-not $services) { Write-Host 'Службы 1С не найдены'; return }
$services | Format-Table Name, State, PathName -AutoSize -Wrap
$answer = Read-Host 'Удалить все перечисленные службы? (да/нет)'
if ($answer -ne 'да') { Write-Host 'Отменено'; return }
foreach ($s in $services) {
if ($s.State -ne 'Stopped') {
Stop-Service -Name $s.Name -Force -ErrorAction SilentlyContinue
}
sc.exe delete "$($s.Name)"
}
Как пользоваться:
- Сохраните код в файл
remove-1c-services.ps1. - Если политика запрещает скрипты, запустите его так:
powershell -ExecutionPolicy Bypass -File .\remove-1c-services.ps1. - Проверьте таблицу перед ответом «да». Если в ней служба, которую нужно сохранить, ответьте «нет» и удалите лишние службы по одной через
sc delete.
💡 Чтобы удалить только службы конкретной версии, добавьте её номер в фильтр: например, -match '8\.3\.22.*ragent\.exe'.