COM object invocation in an EXE Server on Vista RRS feed

  • Question

  • st1\:*{behavior:url(#default#ieooui) }


    I have an EXE COM Server that runs as a restricted user on Windows Vista. Upon starting up, the server registers a COM object under HKCU\Software\Classes (it does not have permissions to register it under HKCR). The “CLSID”, “Interface” and “TypeLib” sub-keys are all written to the HKCU hive.

    Having done so, the EXE Server is able to serve up the COM object to remote client applications. This works on most prior versions of Windows that I have tested on, except Vista.

    The reason I think it does not work on Vista is the following. It appears that the EXE Server’s (or the COM runtime’s) view of HKCR does not include HKCU because of which COM is unable to find the IID of the interface that is being exported (registered under HKCU). This belies my understanding that since HKCR as presented to a process is a logical union of HKCU and HKLM the COM runtime within that process should be able to find IIDs registered under HKCU as well. It appears that on Vista this is not the case for a process running as a restricted user – its HKCR is devoid of HKCU. Can this be attributed solely to limited privileges, as the process is running as a restricted user? Has any one run into issues like these on Vista before?

    Any input is appreciated.



    Wednesday, December 17, 2008 10:37 PM