Hi,
I recently reinstalled Vista Ultimate using unattended install to move the
Users and ProgramData directories to a seperate drive. (Program Files I don't
move, since I typically reinstall all my apps on a reinstall as well).
Note, if you get this same error code, have a look at the following registry
key to see if you have your ProgramData moved as well:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList
For the most part, everything works. But Windows update kept failing to
install all of the available updates, because of the transactional nature of
automatic update installation. So one or two updates would fail, rolling back
everything else as well (and giving them spurious 0x80070011 error codes).
Through a process of elimination, I determined that the problematic updates
are:
KB931099
KB931573
Looking at C:\Windows\WindowsUpdate.log, I notice the following error
messages for these two updates:
2007-09-28 19:59:54:366 1044 4b8 Handler Post-reboot status for package
Package_1_for_KB931573~31bf3856ad364e35~x86~~6.0.1 .0: 0x80070011.
2007-09-28 19:59:54:366 1044 4b8 Handler WARNING: Got extended error:
"POQ Operation HardLinkFile OperationData \SystemRoot\WinSxS\x86_microsoft-windows-crypt32-dll_31bf3856ad364e35_6.0.6000.16425_none_5978e103e 0b8f230\capilock.dat, \??\C:\ProgramData\Microsoft\Crypto\RSA\MachineKey s\capilock.dat"
2007-09-28 19:55:49:167 1020 4b0 Handler Post-reboot status for package
Package_1_for_KB931099~31bf3856ad364e35~x86~~6.0.1 .0: 0x80070011.
2007-09-28 19:55:49:167 1020 4b0 Handler WARNING: Got extended error:
"POQ Operation HardLinkFile OperationData \SystemRoot\WinSxS\x86_security-malware-windows-defender_31bf3856ad364e35_6.0.6000.16420_none_55c0 ce805b18c568\MpAsDlta.vdm,
\??\C:\ProgramData\Microsoft\Windows Defender\Definition
Updates\Default\MpAsDlta.vdm"
So, whats happening here, is that HardLinkFile is failing because D: is a
different volume (at least, that's my understanding).
If you want to fix this, you can do the following (only recommended if
you're pretty comfortable editing XML files, modifying security permissions,
etc).
1. Install each of the updates on its own.
2. After installing it, do NOT reboot yet.
3. Edit C:\Windows\winsxs\pending.xml
4. Look for <HardLinkFile> lines...any lines that have a destination=
attribute of C:\ProgramData (or C:\Program Files, if you moved it as well),
will fail, even if you have a C:\ProgramData junction pointing to
D:\ProgramData, since a junction is simply a redirection, you still cannot
hardlink, its still a different volume.
5. Replace the source= attribute with something like:
<HardlinkFile
source="\??D:\WUTemp\x86_microsoft-windows-crypt32-dll_31bf3856ad364e35_6.0.6000.16425_none_5978e103e 0b8f230\capilock.dat"
destination="\??\C:\ProgramData\Microsoft\Crypto\R SA\MachineKeys\capilock.dat"/>
6. Make sure the full path you specified with source= exists, and is on the
same volume as the destination. (The above works because my C:\ProgramData is
a junction pointing to D:\ProgramData).
7. Reboot.
8. Check C:\Windows\winsxs\poqexec.log. It should be empty, or at least,
have no new entries since before you did this.
9. Start Windows Update, "Check for updates".
10. Bask in the green glow of no available updates
Hope this helps someone else.
Microsoft, please change HardLinkFile to something a bit more forgiving in
this particular instance!