And now for something completely different... or back on topic or whatever.
I think I've tracked down what was causing the problem getting the Windows Features applet to populate. The problem appeared to be related to the process spawning the applet process (optionalfeatures.exe). I decided to use Process Explorer to get to the bottom of it and it turns out the problem is with the program itself. More specifically the problem (or maybe my system's problem) is with the 32-bit version of the EXE.
What's happening (at least today) is the 32-bit version of OptionalFeatures.exe is apparently unable to query the registry for the list of Windows features. I say apparently because the only notable difference I can find in the 2 processes is that SeCreateSymbolicLinkPrivilege is enabled for the 64-bit version but disabled for the 32-bit version. I also know that Registry Reflection was dropped for Windows 7 in favor of Registry Redirection which
according to this MSDN page is accomplished via symbolic links.
Of course like any Microsoft documentation, especially dealing with the registry, the explanation just makes things more confusing. It describes registry keys as symbolic links to other registry keys which is either gibberish or a borderline criminal misuse of terminology. Presumably what they're actually describing is symbolic links somewhere below the SysWOW64 directory which refer to the registry
files under System32.
In fact there don't appear to be junction points of any kind pointing to System32 registry files. That leads me to an alternate conclusion that symlinks to registry files are created on the fly when a 32-bit program accesses the keys in question and then deleted afterward. That would explain why the 32-bit applet with no symlink creation privileges wasn't able to access the necessary keys and why the list of features was never populated. It would be great if someone could definitely confirm or correct my conclusion.
Even if I'm right, though, I'm still confused. In Windows Vista I seem to recall SeCreateSymbolicLinkPrivilege being one of the privileges that UAC stripped when you weren't working in an elevated context. Then in Windows 7 they watered down UAC by whitelisting nearly every OS component so they could elevate silently and be less annoying to users. That's clearly how the 64-bit version maintains that privilege. If I set UAC to the highest setting I do, in fact, get prompted for it. However that's also true for the 32-bit version of the program. It just doesn't happen to inherit that particular privilege from my account.
Except at some point in the past - multiple points in fact - the 32-bit OptionalFeatures.exe worked perfectly for me. I'm sure it worked when I first added it to LBC. Then later I tried it again and it didn't work so I figured I was remembering wrong. I changed the command a little and got it working again, and again it stopped working later so I changed it again. I wouldn't say I fixed it since all I did was remove the .EXE extension. That fixed it again and now it's not working again. I ran the System File Checker to be safe and didn't find any problems. I'm curious to find out if anybody else has this problem or if it's just me.
What I can say is the applet runs just fine when I launch it by GUID using explorer:
explorer.exe shell:::{67718415-c450-4f3c-bf8a-b487642dc39b}
Since explorer is a 64-bit program I know the 64-bit applet will be opened. Now it would be nice to figure out why it matters and especially if it's unique to my computer. If somebody could try running the 32-bit version and let me know what happens that would be great.
Edit: It finally occurred to me to look at some other processes to get an idea about whether SeCreateSymbolicLinkPrivilege is normally enabled or disabled. The general pattern seems to be that I was right about it being enabled by Windows components you would expect to run with elevated privileges like Control Panel applets and the Windows Script Host. However that was also true of the other 32-bit applets I looked at. This definitely looks like an anomaly so now the only question seems to be whether it's the program or my computer that's off.