SCCM 2012: FEP Policy cannot be applied (ErrorCode –2147467259)

In SCCM 2012 ist der Forefront Endpoint Protection (FEP) Client noch stärker im Configuration Manager (SCCM) integriert worden. Daher kümmert sich auch der SCCM Client um das Einspielen der FEP Policy, die als XML File vorliegt.

In einigen Fällen scheitert dies aber und die Clients erhalten in der SCCM Konsole im Bereich FEP den Status fehlerhaft.

Bei der ersten Analyse hilft das Log EndpointProtectionAgent.log auf dem Client (%systemroot%\ccm\logs). In diesem Fall war folgende Fehlermeldung zu lesen:

<![LOG[Create Process Command line: “c:\Program Files\Microsoft Security Client\\ConfigSecurityPolicy.exe” “C:\WINDOWS\CCM\EPAMPolicy.xml”.]LOG]!><time=”09:44:00.851-60″ date=”01-28-2013″ component=”EndpointProtectionAgent” context=”” type=”1″ thread=”4452″ file=”epagentutil.cpp:607″>
<![LOG[Failed to apply the policy C:\WINDOWS\CCM\EPAMPolicy.xml with error (0x80004005).]LOG]!><time=”09:44:00.916-60″ date=”01-28-2013″ component=”EndpointProtectionAgent” context=”” type=”3″ thread=”4452″ file=”epagentimpl.cpp:647″>
<![LOG[Save new policy state 2 to registry SOFTWARE\Microsoft\CCM\EPAgent\PolicyApplicationState]LOG]!><time=”09:44:00.966-60″ date=”01-28-2013″ component=”EndpointProtectionAgent” context=”” type=”1″ thread=”4452″ file=”epagentimpl.cpp:267″>

<![LOG[State 2 and ErrorCode -2147467259 and ErrorMsg Failed to open the local machine Group Policy and PolicyName Antimalware Policy and GroupResolveResultHash A3B029F0133B36CFF682D8CD9BB02D6952B1C9E3 is NOT changed.]LOG]!><time=”09:44:00.967-60″ date=”01-28-2013″ component=”EndpointProtectionAgent” context=”” type=”1″ thread=”4452″ file=”epagentimpl.cpp:339″>

Interessant ist die letzte Zeile: “State 2 and ErrorCode -2147467259 and ErrorMsg Failed to open the local machine Group Policy and PolicyName Antimalware Policy and GroupResolveResultHash”. Eine kurze Recherche im Web ergibt, dass dieser Fehler mit einem Berechtigungsproblem auf die lokalen Gruppenrichtliniendateien zusammenhängen kann, d.h. eine eingerichtete Lokale Gruppenrichtlinieneinstellung hat sich verharkt, so dass das lokale System keinen Schreibzugriff mehr hat. Ein einfaches Löschen dieser Datei (c:\windows\system32\GroupPolicy\Machine\registry.pol) behebt das Problem. Der Ordner GroupPolicy ist im Allgemeinen versteckt.

Möchte man dies remote ausführen, so bietet sich folgende kleine Batchdatei an:


@echo off
call %~dp0findip.cmd %~1
if %ip%.==. goto fehler
echo PC %1 ist erreichbar.
del \\%1\c$\windows\System32\GroupPolicy\Machine\registry.pol

rem remote start gpupdate
psexec \\%1 gpupdate /force

rem update fep policy
SendSchedule.exe {00000000-0000-0000-0000-000000000222} %1

rem update sccm wsus policy
SendSchedule.exe {00000000-0000-0000-0000-000000000108} %1
goto ende

:fehler

echo PC %1 ist nicht erreichbar.

goto ende
:ende

Die Datei benötigt die findip.cmd, die ich bereits in einigen vorhergehenden Batchdateien eingesetzt habe, um zu kontrollieren, ob ein Client online ist. Zusätzlich wird psexec.exe zum Remoteausführen von gpupdate und sendschedule.exe aus dem SCCM Client Toolkit benötigt.

Diese Batchdatei führt folgendes aus:

  • Kontrollieren, ob der per Parameter übergebene PC erreichbar ist
  • Löschen der lokalen GPO Datei
  • Ein Gruppenrichtlinienupdate erzwingen, damit Einstellungen von der Domäne ggfl. korrigiert werden
  • Dem SCCM Client mitteilen, dass er die FEP Policy neu einspielen soll
  • Dem SCCM Client mitteilen, dass er die WindowsUpdate Einstellungen neu eintragen soll

Hintergrund: Die SCCM Komponenten für das Update Management und FEP benötigen beide Schreibzugriff auf lokale Policies. Dabei werden die Einstellungen in die oben erwähnte registry.pol Datei ablegt. Ist dies nicht möglich so kommt es zu dem oben erwähnten Fehler.

This entry was posted in Configuration Manager, Deutsch, System Center, System Center 2012 and tagged , , , , , . Bookmark the permalink.

Leave a Reply