zachd,
I posted this elsewhere in this thread, but posting again in reply to you in hopes you see this, because I have a theory as to what is going on. Without know what the implementation is for the Windows 8.1 lock screen, I'm making a bunch of guesses. But here you go:
- The problems appear to be caused by messed up permissions on the SystemData folder.
- Deleting the SystemData folder entirely doesn't always solve the issue of not being able to change the lock screen.
My guess is that processed versions of lock screen images are being cached in the SystemData folder. You could confirm this. So perhaps I select a lock screen image that's too small for the current display, the processed version is saved in SystemData. Connect a new display to my machine, maybe plug an external monitor into my laptop, and the system will cache another processed version of the lock screen image(s).
Now if I delete the SystemData folder, the system should recreate those processed versions of the images as soon as it needs them. Except it appears that it does not. If I go into the control panel and try to select a lock screen image I've used before, it'll show the blank image for the lock screen on the control panel, and when I actually lock the screen, I'll get the default system image and not the one I tried to pick.
As Charles noted on this thread, if you use the control panel and select an image you've never used in the lock screen previously, it'll show up properly. After selecting five new images this way, suddenly 5 thumbnails of the images all appear on the control panel page under the currently selected image, and at this point you can select previously used images and they work too.
So it appears there is a cache of some sort that's not getting properly cleared when SystemData is deleted or corrupted. The lock screen code is looking at some list of images, thinks it's already processed them and stored the processed versions in SystemData, but when it goes to load them it gets an error. And because the control panel is checking this cache but not validating that the processed images are still avaiable in SystemData, choosing a previously-used image leaves this cache in a bad state.
The lock screen code and especially the control panel for choosing lock screen images should validate the cache entries, and if bad, flush them. This isn't happening, so users get confused when they try to fix it from the lock screen.
I don't know why the permissions on SystemData are getting messed up, but I do think you can make recovery much easier, and prevent more of these forum threads, if the control panel could properly clean up it's cache.
This is all assuming my guesses about the implementation are correct, which they might not be. But hopefully helpful in any case.
Jake