Resolving CCProjectMgr.exe Crash on Siemens WinCC Engineering Station After Domain Controller Promotion
A CCProjectMgr.exe application fault that surfaces immediately after a Siemens Engineering Station (ES) is promoted to a Windows Active Directory domain controller is one of the most common breakages seen in PCS 7 / WinCC environments. The fault is rooted in a Microsoft support policy that explicitly excludes WinCC Runtime and WinCC Configuration from running on a Domain Controller role. This reference walks through identification, root cause, recovery, and verification procedures to restore WinCC Project Manager functionality without losing the underlying PCS 7 project.
1. Problem Description
Symptom: immediately after promoting a Siemens ES to a primary domain controller (PDC) and rebooting, the operator receives a Windows Application Error pop-up with the message "an internal error has occurred and the computer must be restarted". The faulting application is CCProjectMgr.exe, the WinCC Project Manager. The same error reappears whenever the WinCC component of PCS 7 is started or when an OS (Operator Station) is compiled.
The Windows Application event log records the following details:
| Field | Value (as reported) |
|---|---|
| Faulting application name | CCProjectMgr.exe |
| Faulting application version | 700.2101.111.2 |
| Faulting application timestamp | 4f639ec0 |
| Faulting module name | MSVCR90.dll |
| Faulting module version | 9.0.30729.6161 |
| Faulting module timestamp | 4dace5b9 |
| Exception code | 0x40000015 |
| Fault offset | 0x0005beae |
| Process id | 0x780 |
| Application instance id | 01cdd304a5925572 |
| Module path | C:\Windows\WinSxS\x86_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.6161_none_50934f2ebcb7eb57\MSVCR90.dll |
| Event ID | 066ecb83-3ef8-11e2-b183-001999cbefc7 |
The version string 700.2101.111.2 corresponds to WinCC V7.0 SP3 (the 700 family), Update 11. The MSVCR90.dll 9.0.30729.6161 build is the Microsoft Visual C++ 2008 SP1 Redistributable, which is required by every WinCC V7 binary.
2. Environment and Version Identification
Before any repair is attempted, gather the following facts. They are essential both for Siemens support and for matching the right fix to the right binary set.
2.1 ES Operating System
- Windows 7 32-bit / 64-bit (most common for PCS 7 V7.0 SP3)
- Windows Server 2008 R2 (sustained engineering use cases)
- Windows 10 Enterprise LTSC 2019 (where PCS 7 V9.0 SP2 or later has been qualified)
2.2 WinCC / PCS 7 Software Stack
| Component | Version (typical) | Executable |
|---|---|---|
| PCS 7 | V7.0 SP3 / V8.0 / V8.1 / V9.0 | STEP 7 + WinCC |
| WinCC | V7.0 SP3 (700.2101.111.2) | CCProjectMgr.exe |
| Visual C++ Redist | 2008 SP1 (9.0.30729.6161) | MSVCR90.dll |
| .NET Framework | 3.5 SP1 / 4.x | mscoree.dll |
Verify the installed WinCC version through Help > About > Installed SIMATIC software inside the WinCC Explorer, or with the CCProjectMgr.exe file properties dialog (Details tab > Product version). For broader TIA Portal / WinCC component context, see the official overview at Overview of processes and services of TIA Portal components (Siemens documentation portal, TIA V21). The same article clarifies that CCProjectMgr is the WinCC Project Manager responsible for handling the WinCC project on the ES.
3. Root Cause Analysis
The error is not a virus, malware, or random project corruption. It is the deterministic result of a single architectural decision: the ES was promoted to a domain controller role while still hosting WinCC binaries.
3.1 WinCC is Not Supported on a Domain Controller
Siemens clearly states in the WinCC / PCS 7 installation guides and readme files that the WinCC Server, WinCC Client, and WinCC Configuration (i.e. the ES) must not be installed on a computer that holds the Active Directory Domain Controller role. The reason is twofold:
- WinCC uses local Windows accounts (
CCAdmin,CCOperator,CCDiagnostic,CCExplorer,CCRunUser,CCStartSvc,CCWriteTrace) and assigns them specific user rights via the local SAM. On a domain controller, the local SAM is replaced by the Active Directory database, and the WinCC post-install permission script cannot complete. - Several WinCC services (
CCAgent,CCEServer,CCProjectMgr,CCRuntime) expect to start under a non-DC service account with the Log on as a service right and the Deny logon locally policy. On a DC, group policy inheritance blocks these rights and the service host crashes during early initialization, which is exactly what is observed inCCProjectMgr.exeat exception code0x40000015(a managed/unmanaged transition fault inside the CRT startup path).
3.2 Why the Fault Surfaces in MSVCR90.dll
The faulting module is MSVCR90.dll, the C runtime. WinCC V7 SP3 was compiled with Visual Studio 2008 and statically links against the 9.0.30729.6161 CRT build. The SxS side-by-side assembly x86_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.6161_none_50934f2ebcb7eb57 is the manifest-bound CRT that ships with VC++ 2008 SP1. When CCProjectMgr initializes, it calls into the CRT to construct C++ objects that wrap ADsSecurity and ADSI interfaces used to enumerate local groups. On a DC, those APIs return a different schema, and the wrapper code dereferences a null pointer, producing a structured exception that is delivered back to the CRT's exception filter and logged with code 0x40000015.
0x40000015 is not a STATUS_ACCESS_VIOLATION (0xC0000005). It is the bit pattern WinCC uses for internal assertion failed in its own error handler chain. Do not treat it as a memory access bug; treat it as a software-initiated abort.3.3 Why the Fault Also Appears on a Freshly Archived Copy
When the user copied the archive to a second ES and observed the same crash, it confirmed that the project database is intact. The .mdf / .ldf files, the *.pnl graphics, the alarm logs, and the S7 program are all clean. The fault is environmental: the binary cannot start on a host that has been promoted to DC. The most likely follow-on failure mode is that the OS compile still works (because STEP 7 does not require the WinCC local group stack) but the OS server start will fail, leaving the operator with a non-functional runtime.
4. Pre-Checks Before Any Repair
- Confirm the DC role. Open Server Manager > Roles > Active Directory Domain Services. If installed, the host is a DC.
- Confirm WinCC services. Run
sc query CCProjectMgr,sc query CCAgent,sc query CCEServer,sc query CCRuntimein an elevated command prompt. Note any service that returnsSTOPPEDwith exit code1067(process terminated unexpectedly). - Confirm the local WinCC groups exist. Run
net localgroupand look forCC_ADM,CC_OP,CC_DIAG,CC_USERS. On a DC these groups are usually missing because the post-install permission step silently failed. - Capture a Process Monitor trace. Filter on
CCProjectMgr.exeand look forBUFFER OVERFLOWorNAME NOT FOUNDon registry keys underHKLM\SOFTWARE\Siemens\WinCC. This is the smoking gun for a failed post-install on a DC. - Verify disk space, RAM, and the page file on
C:\. WinCC V7 requires a minimum 1.5x of installed RAM for the page file.
5. Step-by-Step Recovery Procedure
The objective is to remove the conflict between the DC role and the WinCC installation. There are three viable paths; pick the one that matches the operational constraint.
5.1 Path A — Demote the ES from Domain Controller (Recommended)
This is the only procedure that fully restores WinCC without re-installation. It requires a second DC in the forest or a willingness to operate the engineering domain without a DC at the ES site.
- Back up the entire ES image with a sector-based tool (e.g.
wbadmin start backupor a third-party disk image). - Open Server Manager > AD DS > More > Remove Role. The wizard will run
dcpromo /demote. - Reboot when prompted. The host will come back as a member server of the existing domain.
- Re-apply the WinCC local group policy. From the WinCC installation media, run
Setup\WinCC\Support\Tools\S7WinCC\CCPerm.exe(WinCC V7) or the equivalent WinCC User Admin console in newer versions. Verify all CC_* groups are recreated. - Re-register the WinCC services:
sc config CCProjectMgr start= auto obj= "NT AUTHORITY\SYSTEM"for system-driven services andsc config CCAgent start= auto obj= "NT AUTHORITY\LOCAL SERVICE"for the agent. - Reboot and verify
CCProjectMgr.exestarts cleanly.
5.2 Path B — Demote but Keep the Host Out of the Domain
If the project is a stand-alone engineering environment, demote the DC and remove the host from the domain entirely. WinCC does not require domain membership for the ES; it only requires a stable Computer Browser and a working local security database.
- Run
dcpromo /unattend /RemoveApplicationPartitions:{GUID}for any application partitions. - Reset the computer account:
netdom remove %COMPUTERNAME% /domain:%USERDNSDOMAIN%. - Re-apply WinCC permissions as in step 4 of Path A.
5.3 Path C — Keep the DC Role and Rebuild the WinCC ES on a Separate Host
This is the conservative path for plants that must keep the DC at that location. Provision a new hardware node or a VM, install the same Windows edition, the same WinCC version, and restore the project archive.
- Build a member server joined to the same domain as the DC.
- Install the matching PCS 7 / WinCC version exactly as listed in 2.2.
- Install the matching VC++ 2008 SP1 redistributable (x86, version 9.0.30729.6161). It can be redistributed from the WinCC installation media under
Support\VC2005x86orSupport\VC2008x86. - Install the matching .NET Framework 3.5 SP1 and 4.x.
- Open the WinCC project archive from the original ES.
- Recompile the OS and run the OS server in simulation mode to verify round-trip behavior.
6. Project-Level Recovery: Save As with Reorganization
Once the host is no longer a DC, the project itself may still carry stale references from the DC install attempt. The following cleanup is part of the canonical Siemens recovery procedure for a project that has been opened on an unsupported host.
6.1 Save As with Reorganization in WinCC Explorer
- Close all WinCC components on the ES.
- Open WinCC Explorer.
- Select the project, then File > Save As.
- Enable the Reorganize checkbox. The reorganization step rebuilds the master database (
Master.MDF) and removes orphaned records left by the failedCCProjectMgrruns. - Choose a new project name and path on a local NTFS volume (do not use a UNC path for the project root).
- Click OK. The reorganization may take from minutes to several hours depending on project size.
6.2 Recompile the OS
- Open the PCS 7 project in STEP 7.
- Right-click the OS > Compile OS > Complete compilation.
- Monitor the Compile OS log under
<Project>\Logs\for anyWARNINGorERRORrows. - If the compile completes with zero errors, start the WinCC Runtime in simulation mode (the green play button in WinCC Explorer). It must come up without any pop-up.
6.3 Project Wizard Smoke Test
- From the WinCC start menu, launch Project Wizard.
- Create a brand-new, empty WinCC project on the local drive.
- Compile the OS of that empty project.
- Start the Runtime. If the empty project also fails with the same
CCProjectMgrerror, the host is still broken. If it succeeds, the original project is the cause and a Save As with Reorganization should be repeated.
7. Repairing the WinCC Installation
If the local groups are missing or the SxS CRT assembly is corrupted, a repair install over the existing installation is preferred over a full uninstall.
7.1 Repair the Visual C++ 2008 SP1 Redistributable
- Download the standalone VC++ 2008 SP1 x86 redistributable from Microsoft (build 9.0.30729.6161).
- Run
vc_redist.x86.exe /repairin an elevated command prompt. - Confirm
MSVCR90.dllversion is back to9.0.30729.6161inC:\Windows\WinSxS\x86_microsoft.vc90.crt_*.
7.2 Repair the WinCC Installation
- Insert or mount the original WinCC installation media matching the version (e.g. PCS 7 V7.0 SP3 Update 11).
- Run
Setup.exeand choose Modify / Repair. - Accept all components and let the installer re-run the post-install permission script and the SxS manifest binding.
- Reboot and re-test
CCProjectMgr.exe.
7.3 Re-register the CCProjectMgr COM Service
CCProjectMgr is implemented as a COM local server. After a repair, force a fresh registration:
cd "C:\Program Files (x86)\Siemens\WinCC\bin"
regsvr32 /u CCProjectMgr.dll
regsvr32 /i CCProjectMgr.dll
sc delete CCProjectMgr
sc create CCProjectMgr binPath= "C:\Program Files (x86)\Siemens\WinCC\bin\CCProjectMgr.exe" start= auto depend= "RPCSS\EventSystem\MSSQL$WINCC"
sc description CCProjectMgr "Siemens WinCC Project Manager"
The sc create line reinstates the service under LocalSystem and binds it to the SQL Server instance that hosts the WinCC project database. The exact instance name can be verified with sc queryex type= service | findstr MSSQL.
8. Verification
| Step | Expected Result | Pass/Fail |
|---|---|---|
1. sc query CCProjectMgr
|
STATE: RUNNING, EXIT_CODE: 0 | |
| 2. Open WinCC Explorer | No pop-up; project tree populates within 10 s | |
| 3. Compile OS (Complete) | 0 ERROR, 0 WARNING | |
| 4. Activate Runtime in simulation | Runtime window opens, picture change works | |
5. net localgroup | findstr CC_
|
All CC_* groups present | |
| 6. Reboot, re-check services | All WinCC services auto-start, no event 1000/1001 in Application log | |
7. gpresult /r
|
Confirms the host is a member server, not a DC |
9. Troubleshooting Matrix
| Symptom | Likely Cause | Action |
|---|---|---|
CCProjectMgr stops immediately with 0x40000015 |
DC role present | Demote (Path A or B) |
| Service starts, then 1067 within 30 s | Local CC_* groups missing | Run CCPerm / WinCC User Admin |
| MSVCR90.dll version mismatch (not 9.0.30729.6161) | Wrong VC++ redistributable installed | Repair VC++ 2008 SP1 (7.1) |
| Pop-up only on OS compile, not on WinCC Explorer open | Corrupt project database | Save As with Reorganization (6.1) |
| Pop-up only on WinCC Explorer open | Corrupt CCProjectMgr COM registration | Re-register per 7.3 |
| Pop-up only on Runtime activation | Project/server mismatch | Check WinCC server name in project, verify DNS |
| Pop-up after Windows update | OS security policy blocks WinCC | Re-apply CCPerm, validate local security policy |
10. Preventive Controls for Future Deployments
- Architectural separation. Document that WinCC ES, OS, and Servers must not be co-located with the AD DS role. The WinCC and PCS 7 installation guides list this restriction in the section "Supported operating modes."
-
Pre-flight check. Add a Group Policy logon script that fails if
(Get-WindowsFeature AD-Domain-Services).Installed -eq $trueand the host is also a known WinCC node. - Image hardening. Build the ES from a clean image every time. Do not promote a WinCC host to DC, demote it, and continue using it as an ES without a re-image; the local SAM state is contaminated.
-
Backup cadence. Run
wbadmin start systemstatebackupand a full WinCC project archive on a weekly cadence. The combination is the only way to recover both the project and the OS state after a major role change. -
Service account hygiene. Create a dedicated
svc-winccdomain user, grant Log on as a service and Deny interactive logon, and switch all WinCC services to that account. This isolates WinCC from any future DC promotion event.
11. When to Escalate to Siemens Support
Escalate if any of the following is true after Path A or C has been completed:
- The pop-up persists with the same
0x40000015exception code. - The WinCC project database refuses to attach to a fresh SQL Server instance.
- The OS compile still produces errors that are not listed in the project-specific PCS 7 readme.
- Multiple ES hosts on the same image show the same fault; the root cause is the master image.
When escalating, attach the CCProjectMgr.exe version, the WinCC readme, the oslog.txt, the last 5 MB of the Windows Application event log, and the System Information (msinfo32) report. Reference the Siemens TIA Portal processes and services reference so the support engineer can map the process to the correct component.
12. FAQ
Why does CCProjectMgr.exe crash with exception code 0x40000015 after I promote the ES to a domain controller?
WinCC is not supported on a host that holds the Active Directory Domain Controller role. During startup, CCProjectMgr.exe enumerates local WinCC security groups via SAM/ADSI; on a DC, those groups are absent and the CRT-bound error handler aborts with code 0x40000015 inside MSVCR90.dll. Demote the host and re-run the WinCC post-install permission step to restore the groups.
Can I keep the ES as a domain controller and just reinstall WinCC?
No. Siemens explicitly excludes WinCC Runtime and WinCC Configuration from a DC role, regardless of how the installation is performed. A fresh install on a DC will fail the same way because the local SAM is replaced by the AD database and the WinCC post-install permission script cannot complete. The supported fix is to demote the host or move WinCC to a member server.
My MSVCR90.dll is at version 9.0.30729.4148 instead of 9.0.30729.6161. Is that the cause?
Probably not by itself. The 9.0.30729.4148 build is the public VC++ 2008 SP1 redistributable. The 9.0.30729.6161 build is the WinCC-bundled SxS variant. Mismatched builds trigger SxS manifest errors, not a 0x40000015 abort. Replace the public build with the WinCC media-bundled build (or vice versa) and re-test.
Will Save As with Reorganization fix the problem without demoting the DC?
No. Save As with Reorganization repairs the WinCC project database; it does not repair the host's role configuration. If the ES remains a DC, the next start of CCProjectMgr.exe will fault again. Use Save As with Reorganization after the host has been demoted, not instead of demoting.
What is the correct SC command to recreate the CCProjectMgr service after a repair?
Use: sc create CCProjectMgr binPath= "C:\Program Files (x86)\Siemens\WinCC\bin\CCProjectMgr.exe" start= auto depend= "RPCSS\EventSystem\MSSQL$WINCC" followed by sc description CCProjectMgr "Siemens WinCC Project Manager". The exact SQL instance name must be verified with sc queryex type= service | findstr MSSQL and substituted into the dependency string.
Does the same restriction apply to TIA Portal WinCC (WinCC Professional) or only to WinCC V7?
The same architectural restriction applies to both product lines. The TIA Portal documentation, including the overview of TIA Portal processes and services, treats the WinCC Project Manager as a configuration component that relies on the same local security model. Do not host a TIA Portal engineering station on a DC.