In my program I use the Running Object Table (ROT) to ensure only one instance of my program is running. Since I \"inherit\" that code from a developer who unfortunately lef
From this site it appears it could be due to a registry setting or due to the security settings on an object registered in the table:
Check "HKLM\Software\Network OLE\Enabled". Fail the request if zero. Check "HKCU\Software\Network OLE\Enabled". Fail the request if zero. Before performing any operation against a ROT entry (i.e., IRunningObjectTable::Revoke, IRunningObjectTable::IsRunning, IRunningObjectTable::GetObject, IRunningObjectTable::NoteTimeChange, IRunningObjectTable::GetTimeOfLastChange, or when including an entry in an IEnumMoniker::Next of an IEnumMoniker returned from IRunningObjectTable::EnumRunning), check the call against the SECURITY_DESCRIPTOR available from IRunningObjectTable::Register. This will be either the value returned by the object's IActivationSecurity::GetSecurityDescriptor at the time of IRunningObjectTable::Register or will have been taken from "HKCU\Software\Network OLE\DefaultROTSecurity" or "HKLM\Software\Network OLE\DefaultROTSecurity" at the time of IRunningObjectTable::Register if the object did not support IActivationSecurity.