cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
jingvarr
Level 2

DLL self-register on vista: HRESULT -2147220473

Hi,

I am having a problem with DLL self-registration:
--------------------------------------------------------------------------
Error 1904.Module C:\Program Files\\\System\A.dll failed to register. HRESULT -2147220473. Contact your support personnel.
MSI (s) (20!18) [01:23:22:561]: Product: -- Error 1904.Module C:\Program Files\\\System\A.dll failed to register. HRESULT -2147220473. Contact your support personnel.
--------------------------------------------------------------------------
Some additional info:
1) setup works fine on WinXP
2) after self-reg error messages on Vista, I can run regsvr32 and register all of my DLLs without any problems

Installshield support gave me 2 options:
1) make my own custom actions that call regsvr32.exe on my DLLs
2) use ExtractAtBuild bit on components that contain my DLLs so that registry is uploaded at build time and installed that way

I do not like either one of the options. First one will require me to write 30+ custom action calls and is a bit of a hack. I do not like the second one because the DLLs may do other stuff and call other things in their reg routine (so the method may not even work).

I cannot figure out what is causing these issues. I want to get to the bottom of this issue: what is causing this? Why is the stock self-registration method not working?

-igor.
Labels (1)
0 Kudos
(1) Reply
joshstechnij
Level 10 Flexeran
Level 10 Flexeran

You can try using the MSI or the InstallShield self registration options. However, if both of these fail, there is nothing that can be done to change the behavior. In our experience, regsvr32.exe on Windows Vista (and newer) is shimmed which allows certain DLLs to register when they otherwise fail when calling their DllRegisterServer entry point (you can view the shims applied to regsvr32.exe with the Microsoft Application Compatibility Toolkit). The shims allow access checks to WRP protected resources to succeed where they would otherwise fail. If any of the DLLs that are failing to register are attempting to write/modify Windows protected files or registry keys, this is likely the cause of the failure.
0 Kudos