---
title: MMFB — Effector Saver Agent не стартует, .\Администратор залочен
date: 2026-05-28
tags: [mmfb, lionart, effector-saver, windows-service, decision]
status: resolved
---

# MMFB / LionART 1C — Effector Saver Agent не стартует, `.\Администратор` залочен

## Контекст
[[../projects/mmfb/lionart-1c|VM 100 pve LionART]] (`WIN-70M2VEJIKEF`, 10.253.1.240, Win Server 2022). Служба `efsaveragent` (Effector Saver Agent, `C:\Program Files\Effector Saver\fagent.exe`) в Stopped/Auto, не стартует.

## Диагноз
Цепочка Event Log → SCM:

```
7038  Службе "efsaveragent" не удалось войти в систему с именем ".\Администратор"
       и текущим паролем, поскольку произошла ошибка
7000  Сбой при запуске службы "Effector Saver Agent"
```

Это повторялось каждую минуту в течение последних минут. SCM хранит пароль учётки отдельно от LSA — пароль `.\Администратор` менялся (или Effector ставили со старой парой), а SCM-секрет не обновили.

Дополнительно: попытки SCM × мои WinRM-пробы залочили учётку.

```powershell
# Через LogonUser API:
LogonUser SERVICE     : False  (err=1909)   # ERROR_ACCOUNT_LOCKED_OUT
LogonUser INTERACTIVE : False  (err=1909)
LogonUser NETWORK     : False  (err=1909)

# Через ADSI:
$u = [ADSI]"WinNT://./Администратор,user"
$u.IsAccountLocked  → True
$u.BadPasswordAttempts → 10
```

## Решение (порядок важен)

```powershell
# 1. Заглушить SCM, чтобы он перестал каждую минуту ломиться с неверным паролем
sc.exe config efsaveragent start= disabled
sc.exe stop efsaveragent

# 2. Разблокировать учётку (Set-LocalUser не имеет lockout-поля → через ADSI)
$u = [ADSI]"WinNT://./Администратор,user"
$u.IsAccountLocked = 0
$u.SetInfo()

# 3. Проверить пароль через LogonUser(LOGON32_LOGON_SERVICE=5) — тот же путь, что использует SCM.
#    Если False — не пиши пароль в SCM, иначе сразу опять залочишь.
#    Если True — пароль валидный, прошиваем:

sc.exe config efsaveragent obj= ".\Администратор" password= "<актуальный_пароль>"
sc.exe config efsaveragent start= auto
sc.exe start efsaveragent
```

После старта:
- `efsaveragent` в Running, PID 9104, fagent.exe, 28 MB
- Новых 7038/7000 — нет
- Аккаунт остаётся разлоченным

## Уроки
- При **7038** не паникуй с lockout: сначала **остановить службу** (или переключить на disabled), потом разблокировать.
- При WinRM-failed-login проверяй lockout первым делом (через `[ADSI]"WinNT://./<user>,user"` поле `IsAccountLocked`) — не подбирай пароль вслепую, иначе добиваешь счётчик.
- `Set-LocalUser` не умеет снимать lockout — только ADSI или `net user`-с-новым-паролем.
- Не доверяй `BadPasswordAttempts: 0` после разблока — этот счётчик не сразу обнуляется; смотри сам `IsAccountLocked`.

## Рецидив 2026-06-28 (та же причина, подтверждена)
Снова: `efsaveragent` Stopped/Auto, `.\Администратор` залочен (BadPwd=10). Серия 7038/7000: 25.06 15:12, 25.06 15:24, 28.06 12:14. Heartbeat в `fagent.log` оборвался 25.06 ~15:05 → **бэкапы не шли ~3 дня (25.06 → 28.06)**.

Восстановление тем же playbook (disable→stop→unlock→LogonUser(SERVICE)→pin→start). Ключевое: `LogonUser(SERVICE)` с паролем `OL260380eg` вернул **True** — то есть пароль учётки **верный**, расходился именно SCM-секрет. Значит первопричина закрыта: **пароль `.\Администратор` меняли (вероятно при настройке RDP+2FA) без обновления службы** → SCM-секрет устарел → lockout-шторм. Итог: служба Running, PID 10488.

## Постоянный фикс (ещё не применён — нужен выбор Олега)
Каждая ротация пароля `.\Администратор` будет ронять службу и локать учётку. Варианты, чтобы развязать службу с ротируемым паролем:
1. **LocalSystem** — без пароля, никогда не локается. Безопасно **только если** Effector пишет бэкап на локальный диск. Если назначение — UNC под админ-кредами, LocalSystem пойдёт на сеть как computer-account и потеряет доступ. Назначение хранилища лежит в `C:\ProgramData\Effector Saver\esdata.db` (SQLite), в `fagent.log` его нет.
2. **Выделенная учётка `.\Effector Saver`** (локальная, уже существует) с непротухающим паролем + `SeServiceLogonRight`.
Перед сменой run-as — узнать назначение бэкапа (esdata.db / fmanager UI). До тех пор: при любой смене пароля админа сразу `sc.exe config efsaveragent obj= ".\Администратор" password= "<новый>"`.
