RSS

Superfail, the third

Superfail part 1
Superfail part 2

Thanks to astute reader Nate Coffey and Dial-a-fix, we've found another DLL registration bug.

The current version of wuaueng.dll provided to Windows 2000 service pack 4 clients has a bug in its DllInstallServer.

In the first picture is a "before" screenshot that shows that all of the SvcHost key values are here. This is a freshly installed Windows 2000 machine that only has Service Pack 4:

Everything's normal

In this second picture, I have visited Windows Update, gotten the latest Windows Update client, closed my browser, and then unregistered the DLL using regsvr32 /u:

Where'd it go?

In this third picture, I have re-registered the DLL using regsvr32 /i, but it caused an error (0×80070057) and only one key was put back. The netsvcs key is lost at this point. In order to fix this, merge this default SvcHost key .reg file.

DllInstallServer is broken.

The error code 0×80070057 is E_INVALIDARG, or invalid parameters/arguments.

The current version of Dial-a-fix will accidentally trigger this because of the malformed DllInstallServer in wuaueng.dll. Once a new, fixed version of the Windows Update client is pushed out, Dial-a-fix will be able to help you again. I'll be filing this as a bug with Microsoft – I hope they fix it.

Edit: be sure to read Superfail part 2 for the solution for afflicted machines.

  • Trackback are closed
  • Comments (8)
  1. Just wanted to point out you'll want to revise your steps on Superfail part 2. On that page you say to run section 5, then merge your reg file, and reboot. All of this is ok, but then the next step is to run section 3 which will effectively recreate this whole problem once again. This may be why some people still have a problem after using your reg fix. They assume all will be well and good by running Dial-a-fix again (to sort of clean up registrations again) and once again create the failure.

  2. I do want to note, though, that ALL of this pertains to Windows 2000 and it appears Windows XP is unaffected. At least SP2. Prior to that I am unaware as I do not deal with SP1a or earlier any longer.

  3. It looks like you're right about Superfail part 2's steps. I'll go adjust that.

    • C
    • Nov 13th. 2007 9:41am

    Note that this is indeed fixed in XPSP2 and 2K3SP1 (and newer), but it wasn't fixed in W2K. The fix isn't in wuaueng.dll either, it's in the setup api engine (setupapi.dll). You'll also notice that if you don't run the regsvr32 command against wuaueng.dll with the /i switch, you don't get an error on W2K either (there's no "install" code in the .dll, so no need for /i).

  4. I'm almost sure on the answer on this, but I'll ask it anyhow just because I can. :) Is it possible to use XP's setupapi.dll on a 2K machine? I would think that 2K's feature-set in that DLL would be pretty much a subset of XP's, and not sure what kind of compatibility issues you'd run into as a result of using it. And again, I'm sure you'll run into problems trying. But I had to ask anyhow.

    • C
    • Nov 21st. 2007 1:29pm

    I've not tried, honestly, but you could try it in a VM to see what happens.

  5. C: If /i isn't supported by that DLL, then (in my humble opinion) it should throw the appropriate error like all other DLLs do, rather than making a huge mess. It all just reminds me of what happened here: http://djlizard.net/2006/03/14/139/

    • c
    • Mar 3rd. 2008 11:19pm

    I can't say I don't agree, but this is a hand in the toaster moment – dev probably never expected someone to do this (hey, nothing ever breaks, right? Right? ;)), but you can and yes, probably should not work this way. But as I said, it was found waaaaay too late. It's not a security update, _and_ it's fixed in XP SP2, so it's just not gonna get fixed.

Comments will be sent to the moderation queue.