Fixing ERROR_NOT_SAFEBOOT_SERVICE (0x0000043C) in Safe Mode
This error hits when you try to start a service that's blocked in Safe Mode. The culprit is almost always a bad service dependency or startup config. Here's the fix.
You're booting into Safe Mode on Windows Server 2019 or Windows 10/11 to troubleshoot a driver issue, and you try to start a service — maybe the Windows Firewall or a third-party agent like Symantec Endpoint Protection. Instead of starting, you get: ERROR_NOT_SAFEBOOT_SERVICE (0x0000043C) - This service cannot be started in Safe Mode. The service just sits there, greyed out in services.msc, and the Event Log shows the 0x0000043C error with no additional detail. I've seen this on everything from domain controllers to standalone SQL servers.
What's actually happening
Safe Mode loads a minimal set of drivers and services — basically just the kernel, storage stack, and critical system services. Any service marked with a SERVICE_DEMAND_START or SERVICE_AUTO_START that isn't in the Safe Mode service list gets blocked. The Windows Service Control Manager (SCM) literally reads a registry key to decide what's allowed. If your service isn't listed there, you get 0x0000043C.
The root cause is usually one of two things:
- Dependency chain break: The service depends on another service or driver that's not loaded in Safe Mode. SCM sees the missing dependency and bails out.
- Service startup type set incorrectly: Someone set the service to
AutomaticorManualbut didn't configure it for Safe Mode loading. It's not malicious — just a config oversight.
The fix — step by step
You have two options. Pick the one that fits your situation.
Option A: Add the service to Safe Mode (quick fix)
- Boot into Safe Mode with Networking (if you need network access) or regular Safe Mode.
- Open Registry Editor (regedit) as Administrator.
- Go to:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SafeBoot\Minimalfor regular Safe Mode, orHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SafeBoot\Networkfor Safe Mode with Networking. - Right-click the
SafeBootkey, choose New > Key. Name it exactly the service's display name (case-sensitive). For example,Windows FirewallorSymantec Endpoint Protection. - Inside that new key, create a String Value named
(Default)and set its data toService. - Close regedit, then run
net start <ServiceName>or start it via services.msc.
Option B: Fix the service's own registry (permanent)
This is better if you plan to boot into Safe Mode again later and want the service to just work.
- Boot normally (not Safe Mode).
- Open Regedit as Administrator.
- Go to:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\<ServiceName> - Look for the
Startvalue. Set it to2for automatic,3for manual. Don't set it to 4 (disabled). - Also check if there's a
DependOnServicemulti-string value. If it references a service that doesn't load in Safe Mode (likeLanmanServerorRpcSs), remove that dependency temporarily. - Reboot into Safe Mode and try starting the service.
What to check if it still fails
If neither fix works, don't waste time guessing. Here's what I check next:
- Event Viewer > System log: Filter by source
Service Control Manager. Look for Event ID 7000 or 7023. It'll tell you which dependency is missing. - Run
sc qc <ServiceName>from an admin command prompt. Look at theDEPENDENCIESline. If it shows a service that's not running, that's your blocker. - Check the driver stack: Some services depend on kernel drivers (
DependOnGroup). In Safe Mode, many driver groups are skipped. You'll need to add the driver group to the Safe Mode list using the same registry trick above, but underSafeBoot\MinimalorSafeBoot\Network. - Third-party security software: Products like McAfee, CrowdStrike, or Trend Micro often hook into the boot process. If the service you're starting is a dependency of that security suite, you might need to temporarily disable the suite's filter driver. Boot normally, stop the security service, then retry.
One last thing: If you're running Windows Server 2012 R2 or older, the registry path is the same but the Safe Boot list is sometimes case-sensitive. I've seen failures because someone typed Windows Firewall instead of Windows Firewall — yes, the space matters. Use sc query to get the exact display name.
That's it. This error is annoying but straightforward once you know where to look. You'll fix it in under 10 minutes.
Was this solution helpful?