System Shim Database Entries: They May Not Work, and How To Modify Them If They Don’t


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.

Comments (15)

  1. Zooba says:

    "… we’d really love for you to tell us about it"

    I (and probably plenty of others) would love to do that. The particular app I was playing with simply had the Win98 mode applied, when it only needed two individual shims (one of which was not included in Win98).

    Clearly Microsoft can’t be expected to determine the ideal set of shims for hundreds of applications, so it would be great if there were some way of sharing fixes. I seem to recall something like this being discussed a while ago (possibly here?), but apparently nothing came of it.

  2. 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 som

  3. ABC says:

    Please could you explain me, what does this SYSMAIN.sdb file will contain exactly?

  4. cjacks says:

    ABC,

    You can see the contents using compatadmin.

    Chris

  5. ABC says:

    Hi Chris,

    Ya, thnks…I have seen that using CA. But why I am wondering is, Even this SYSMAIN.sdb fiel is present in XP sp2 also. But what is the need of this file in XP.

    What I understood is this file will be having only the shims details and also the application details( which made compatible by applying some shims). But how it will be useful in XP os.

  6. cjacks says:

    ABC-

    That’s the shim database from XP. The contents are different – the main goal for the apps shimmed here was to fix consumer applications that used to work on Win9x to get them working on the NT platform.

    Chris

  7. ABC says:

    Chris,

    ya fine so this sysmain.sdb file in Xp will be having information related to the applications, which made as compatible by applying the shims.

    k….ya I have seen some others .SDB file in the following location C:winNTappPatch

    1)apphelp.sdb

    2)msimain.sdb

    3)apph_sp.sdb

    4)drvmain.sdb

    what does these files will be doing? …how it would be helpful?

  8. cjacks says:

    ABC-

    It’s all details of implemenetation. You don’t need to concern yourself with them. They’re aleady there, already applied, and no action is required on your part.

    Thanks,

    Chris

  9. ABC says:

    Ya, thanks.

    But I just want to know what is the functionality of those databases.

    apphelp.sdb—> I know about this. But what about the rest of all, if you could give me some idea it would be an add on value to get understand exactly why it is, how it will help us?

  10. ABC says:

    Hi,

    in SYSMAIN.sdb file, for some of the applications APP Help messages are created using the PCA prompts.

    If I want to suppress those PCA prompts, is it possible?……either changing the registry keys or adding any shims.

    i heared there is a registry

    HklmsoftwaremicrosoftwindowsNTcurrent versionAppCompatFlagLayers

    if add the application name and it’s correspondent shim here, we can supress the PCA prompts.

    but it is not working……..any idea on this….

    thanks in advance…

  11. ABC says:

    Hi,

    in SYSMAIN.sdb file, for some of the applications APP Help messages are created using the PCA prompts.

    If I want to suppress those PCA prompts, is it possible?……either changing the registry keys or adding any shims.

    i heared there is a registry

    HklmsoftwaremicrosoftwindowsNTcurrent versionAppCompatFlagLayers

    if add the application name and it’s correspondent shim here, we can supress the PCA prompts.

    but it is not working……..any idea on this….

    thanks in advance…

  12. cjacks says:

    You can configure the program compatibility assistant via group policy, under Administrative Templates Windows Components Application Compatibility.

  13. ABC says:

    Chris,

    if do like that I will not get prompt for all the applications, right?…

    But I want to disable only for one application, is it possible?

    ABC

  14. ABC says:

    Chris,

    if do like that I will not get prompt for all the applications, right?…

    But I want to disable only for one application, is it possible?

    ABC

  15. cjacks says:

    Users will have a check box to disable it for that one application after they see it for the first time. If it doesn’t work well, why don’t you want to tell your users that it doesn’t work well? You can disable it for that app by upgrading the app to a version that works… pretending that everything is OK when it really isn’t seems like a monsterously bad idea…