I received one comment on my recent blog post on copying from the system shim database, which I think is worthy of discussion as I have heard similar questions before:
I have found previously (under Windows XP, haven’t attempted under Vista) that some of the built-in shims weren’t suitable. I had a custom database for the applications into which I’d copy/paste/modify the system shim database. I don’t recall ever seeing this error, so does compiling a modified shim not cause it?
To answer the question directly, I am not sure about Windows XP. However, on Windows Vista, even if I modify the shim, I end up unable to compile the SDB.
But that leads us to two discoveries.
First, the fact that we have shimmed something in the System Shim Database does not mean that it works 100%.
With some applications, we are simply shimming to get it to a particular point in the application. Working with one ISV, our objective was just to get it to hobble through to the auto update component of the application. They didn’t care if it was a little bit ugly, so long as it actually got there.
With others, we have simply shimmed the application to fix the application and close a particular bug report that was submitted. If nobody ran the application to resolve that scenario, found that it failed, and submitted the bug to us, we haven’t even tried to shim it.
Or, perhaps, we couldn’t shim it, because the thing that it does wrong is unfixable using shims.
I have heard some people suggesting that finding the application in the list means that we are vouching for the fact that it works. We work really hard to get it that way, but unfortunately we can’t make such a promise.
Second, you can modify the fixes that we have made to applications.
But it’s not always easy.
If you have additional things to fix, then you can just add the application (don’t copy/paste, because that’s broken right now) and add the additional fixes that resolve the scenarios we clearly haven’t tested before. We’ll pick up both the entries in sysmain and in your custom SDB and apply both sets of shims.
If you need to remove an application fix from sysmain, you can right click on it, and disable that entry. If you need to disable an entry, we’d really love for you to tell us about it, so we can fix things up the right way. An example would be if you needed to add additional command line arguments to a shim. We can’t just add the same shim twice or they don’t both get picked up. Instead, you’d want to disable ours and add yours.