On Windows7, regsvr32 is not written to HKCR \ CLSID

I created a new simple COM object in Visual Studio 2008 using the ATL wizard. An object has one class and simple methods. The ATL wizard generated .rgsfiles for my class.

When I run regsvr32 Simple.dllXP on my machine, the class is registered, the information is displayed in HKCR\Simple.SimpleObjectand in HKCR\CLSID\{guid}as I expect.

However, on my 64 bit Windows 7 machine, this is not the same. I ran regsvr32 as administrator to show details in HKCR\Simple.SimpleObject. But part in HKCR\CLSIDnever gets there. And so I can not create new instances. (Being desperate, I tried both regsvr32 on System32 and SysWOW64, the same effect.)

Why dont regsrv32put data in HKCR\CLSID?

+3
source share
3 answers

HKCR is an alias for HKLM \ Software \ Classes, but it does not show everything. Look at HKLM \ Software \ Wow6432Node \ Classes \ CLSID for the registered {guid}. This is where c: \ system32 \ syswow64 \ regsvr32.exe writes them.

You mentioned that you have already tried this. There is something really wrong there, you cannot arbitrarily run any version of Regsvr32.exe and get the same DLL entry. A 32-bit DLL cannot be loaded into a 64-bit process. In other words, it is not possible for the 64-bit version of Regsvr32.exe to register a 32-bit COM server. And vice versa. Why you did not receive the error message, it is impossible to find out here, the only reasonable explanation is that you somehow did not actually run the correct version of Regsvr32.

, SysInternals ProcMon. , ATL .

+6

32- . 64- regedit, , .

HKEY_CLASSES_ROOT\Wow6432Node\CLSID.

32- .

:

+4

, Regsvr32 , .

" ", , .

+1

Source: https://habr.com/ru/post/1796334/


All Articles