regsvr32 keeps running (dialog boxes missing)

WIN7Schnacke

New member
Local time
11:28 PM
Messages
15
Hello World,

I have a programm that is copying a file (and its needed .dll files) to a selected folder. After the copy process the .dll files need to be registered with regsvr32. This is also part of the programm.
On WIN XP there have been shown a dialog box that the regstration have been completed successfully for each call of regsvr32.

On WIN7 the regsvr32 call will be started (regsvr32.exe can be seen in TaskManager) and the regsitration has been completed successfully, but the dialog box is not appearing.
In TasManager the regsvr32 don't dissapear and regsvr32 application is still 'blocking' the .dll files, because I can not rename the files or the folder where the files are inside.

Anyway the file that is needing the .dll files to be able to run is working fine, therefore the registration have been completed successfully.
Therefore I guess that this can be some sort of display bug?!


Does anyone know how it is possible that the registration with regsvr32 can be done in the correct way?


Using the silent paramter /s does not help in this case, because I need to get an information if the registration will not be completed successfully. Silent is disabling all messages including the one that I need.


My WIN7 configuration:
* User is administrator
* UAC is disabled
* more information needed?


If anyone has some helpful notes or comments, please let me know!


Kind regards,
Schnacke
 

My Computer

OS
XP, VISTA, WIN7
Why on earth would a dll have to be registered, every time it runs ?
That doesn't make any sense to me.

As for your question: check if the regsvr32 maybe is invoked with the switch /s (silent)
That would explain the missing box ;)

-DG
 

My Computer

Computer Manufacturer/Model Number
HP m8000n
OS
Windows 7 Ultimate x86
CPU
DualCore AMD Athlon 64 X2, 2600 MHz 5200+
Motherboard
Asus M2N68-LA (Narra)
Memory
Samsung 2GB DDR2
Graphics Card(s)
Onboard NVIDIA GeForce 6150SE nForce 430
Sound Card
Onboard nVIDIA nForce 6100-430 (MCP61P)
Monitor(s) Displays
Westinghouse 19" LED
Screen Resolution
1280x1024
Hard Drives
SATA II Seagate Barracuda 500GB
USB II WD Elements 500GB
USB II WD My Book 1TB
USB II WD My Book 2TB
PSU
Stock (HP)
Case
Stock (HP)
Cooling
Stock
Keyboard
Logitech Classic KB 200
Mouse
Standard HP opticle USB mouse
(1)
Why on earth would a dll have to be registered, every time it runs ?
That doesn't make any sense to me.

My programm is only for copying a file (and all related and needed .dll files) to a new location. Typically the user is deleting the old folder, so registration via regsvr32 is necessary!

(2)
As for your question: check if the regsvr32 maybe is invoked with the switch /s (silent)
That would explain the missing box ;)

-DG
see the following:
Using the silent paramter /s does not help in this case, because I need to get an information if the registration will not be completed successfully. Silent is disabling all messages including the one that I need.




call of regsvr32 has been completed.
it seems that the dialog boxes are the only things that are missing???


It would be very nice, if anyone could leave me a comment...



Kind regards,
Schnacke
 

My Computer

OS
XP, VISTA, WIN7
Hello World,

please allow me to determine my problem more explicitly.



The details:
There is an application (call it App.exe) that needs some COM registrations and related .dll and .ocx files. These will be registered through a small C++ tool which is written with MS VS6. Let's call this tool Tool.exe.
For your interest the detailed registration:
Code:
[COLOR=black]
HINSTANCE hinst;
hinst=ShellExecute(NULL,[COLOR=#a31515]"open"[/COLOR],[COLOR=#a31515]"regsvr32"[/COLOR],m_Path+[COLOR=#a31515]"\\Important.dll\""[/COLOR],NULL,SW_HIDE);
[COLOR=green]// ** if registration failed: show a message box[/COLOR]
  [COLOR=blue]if[/COLOR] (([COLOR=blue]int[/COLOR])hinst<=32) AfxMessageBox([COLOR=#a31515]"Register Important.dll failed"[/COLOR]);[/COLOR]
On XP after each regsvr32 call there will be shown an information in the way of "registration completed successfully" which is the same information if I would call regsvr32 from command line.

Unfortunately on WIN7 there will be shown NO information.
Because App.exe necessarily need the registered components I can check easiliy if the registration has been completed.
BUT the problem is that in taskmanager you can see that there are still some regsvr32.exe processes running and these processes are 'sticking on the .dll files'.
While the processes can be seen it is impossible to rename the files nor the folder where they are inside.
This means that the regsvr32 call has not been completed. It seems that the information (via message box or dialog??) is the only thing that is missing.

How can .dll and .ocx files be registered correctly (similar to regsvr32 via CMD) in WIN7 programmatically?

Some facts:
* UAC is disabled
* User is Administrator
* User name is John
* Tool.exe is located within a folder on C: drive
* Tool.exe was started by user manually
* I started Interactive Service Detection but no information was shown


I did try so far to do the change the way of registration to
(1) LoadLibrary( dllFile )
(2) GetProcAdress ( DllRegisterServer)
(3) Call DllRegisterServer
But this failed for two files. One file that was not working is MSXml4.dll (Microsoft XML 4.0 SP2) where msxml4r.dll (Microsoft XML 4.0 SP1 Resources) is in the same directory. (When I remember correctly the 4r.dll file is necessary for the 4.dll file).

I don't want to get to much in detail with this error so far, because I hope that some experienced WIN7 C++ developer will find a solution quickly! ;)


If you need any further inputs, please let me know!


Hopefully someone has some good news for me!


Kind regards,
Schnacke
 
Last edited:

My Computer

OS
XP, VISTA, WIN7
Back
Top