After a recent upgrade to a non-Windows component, we started a seeing a few complaints of Windows Script Engine issues, manifesting themselves as Internet Explorer issues or the failure to execute VB scripts on the local workstations. After isolating the issue to a problem registry value for VBscript and JScript, the issue was resolved by re-registering these components. In doing so, I became a little curious about the whole regsvr32 process and did a little investigating into what happens when regsvr32 is executed.
For starters, think of an unregistered DLL like a person without an identity. You exist, but without a social security number, an address, or any other official documentation, you’re just not a functional part of society. If you want to work, contribute, or be known, you need to walk into the local social security office and start by getting an SSN (yes, the Windows registry is a bureaucratic institution).
I use Process Monitor to do a simple trace all regvsr32.exe operations1. In the example here, I am going to unregister and then register a module. It doesn’t really matter which one, but I want to use one where the effects of unregistering it are obvious. I start by un-registering jscript9.dll, the Windows Script Engine for Internet Explorer 9. Read the rest of this entry »