Errors received when using Controller. Example #1: Users receives an error message when trying to view standard reports (also known as "system reports") in Controller. Example #2: Users receives an error message when using Java-related functionality (for example AFC / allocations).
Description: System.Web.Services.Protocols.SoapException: Server was unable to process request. ---> System.Runtime.InteropServices.COMException (0x800703FA): Illegal operation attempted on a registry key that has been marked for deletion. (Exception from HRESULT: 0x800703FA)
at FrAccountB.AccountReportsBClass.CreateAnalyzeRsCRN(String sGuid, String sUser, Int32 lLLocale, Boolean bLokSprak, String sBnr, Recordset rsAccount, String sXmlDoc)
at Cognos.Controller.Proxy.CCRWS.AccountReportsB_CreateAnalyzeRsCRN(String sGuid, String sUser, Int32 lLLocale, Boolean bLokSprak, String sBnr, DataSet rsAccount, String sXmlDoc)
--- End of inner exception stack trace ---
at Microsoft.VisualBasic.ErrObject.Raise(Int32 Number, Object Source, Object Description, Object HelpFile, Object HelpContext)
at Cognos.Controller.Common.RaiseErrCli.RaiseError(Int32 lErrNo, String sErrSource, String sErrDesc, String sErrHelpFile, Int32 lErrHelpContext)
at Cognos.Controller.Forms.Form.frmAccountRep.CreateAnalyzeRsCRN(XmlDocument& xmlDoc)
at Cognos.Controller.Forms.Form.frmAccountRep.IFormStandardReport_CreateReportData(IStandardReport& cIStandardReport
Model not found in context: journalType
Unable to find instance of model of type: <.....>
FAIL: Message: Automation error
Illegal operation attempted on a registry key that has been marked for deletion. Source: FrJavaProxyB
Someone (for example I.T. administrator) has recently logged onto the Controller application server, and then afterwards logged off again, using the Windows username/password that is running the Controller system in the background.
- In other words, someone has recently logged off the Controller application server who was logged onto Windows using the Controller COM+ user account.
By default, Microsoft Windows 2008 will forcefully unload the user registry at user logoff. Therefore, if someone logs onto Windows on the application server using the Controller COM+ user account (for example "DOMAIN\Controller_system") then logs off afterwards, then this will trigger the user registry to be forcibly unloaded. This can cause the COM+ application to fail.
- For more information, see the Microsoft article linked below.
Controller application server based on Windows 2008.
Diagnosing The Problem
If you enable COM tracing, you’ll see the error ERROR_KEY_DELETED in the ole32 trace log:
-  0BA8.15D0::10/17/2009-13:07:54.390 [OLECOM](:CComRegCatalog::GetClassInfoW) CLSID:ecabafae-7f19-11d2-978e-0000f8757e2a 1018(ERROR_KEY_DELETED)
 0BA8.15D0::10/17/2009-13:07:54.390 [OLECOM](:CComCatalog::GetClassInfoInternal) CLSID:ecabafae-7f19-11d2-978e-0000f8757e2a Flags:0 IID:00000000-0000-0000-c000-000000000046 0x800703fa(ERROR_KEY_DELETED)
You will also see events like the following in the 'application' event log:
- Log Name: Application
Source: Microsoft-Windows-User Profiles Service
Date: 10/26/2009 8:22:13 AM
Event ID: 1530
Task Category: None
Windows detected your registry file is still in use by other applications or services. The file will be unloaded now. The applications or services that hold your registry file may not function properly afterwards.
1 user registry handles leaked from \Registry\User\S-1-5-21-1049297961-3057247634-349289542-1004_Classes:
Process 2428 (\Device\HarddiskVolume1\Windows\System32\dllhost.exe) has opened key \REGISTRY\USER\S-1-5-21-1049297961-3057247634-349289542-1004_CLASSES
Resolving The Problem
Obtain a short period of downtime (no users on the system) and reboot the application server.
- Afterwards, ensure that nobody logs onto the Controller application server using the COM+ Windows user account, except during periods of maintenance (for example upgrading Controller version)
Long Term Fix:
Follow the instructions inside the relevant Microsoft article (see link below for full article, or follow the steps inside the summary).
Summary of Microsoft Fix:
Disable the new "User Profile Service" feature by enabling the policy setting 'Do not forcefully unload the user registry at user logoff'.
- When enabled, Windows 2008 does not forcefully unload the registry and waits until no other processes are using the user registry before it unloads it.
- Logon to the application server as an administrator
- Launch the group policy editor (click "Start - Run" then type "gpedit.msc")
- Navigate "Computer Configuration -> Administrative Templates -> System-> UserProfiles"
- Double-click on "Do not forcefully unload the user registry at user logoff"
- Change the setting from “Not Configured” to “Enabled”. TIP: 'DisableForceUnload' is the value added to the registry
- Obtain a short period of downtime (no users on the system) and reboot the application server (to ensure that the change has been registered).
15 June 2018