locked
What did program compatibility troubleshooter on Windows 10 do to make the program work? RRS feed

  • Question

  • We have a CSharp Winforms 32 bit program which works fine on Windows 7, 8 and 10.

    Our config file has the following: supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"

    There is one particular user on whose Windows 10 x64 laptop the program repeatedly became unresponsive after a while with Event AppHangB1 and Hang type: Top level window is idle

    We then ran the Program Compatibility troubleshooter. The compatibility troubleshooter said that our program is incompatible for Windows 10 and applied a fix.

    It changed the Compatibility setting to run the program in Compatibility mode for Windows 8.

    Since then, the program is working perfectly fine without a single code change.

    What we are trying to figure out is, what this setting really means at a code level. Any idea what could be the reason that the program is flagged as incompatible on Windows 10?

    Thank you!

    Tuesday, August 11, 2020 1:37 PM

All replies

  • So it seems like a dumb suggestion because it's 2020 and 32-bit OSes are so far gone that Apple and Ubuntu have flat-out quit making 32-bit OSes.  It also seems dumb because you've specified a 32-bit program so I assume you've already set up an x86 compile target.

    What used to be a common problem with DotNET Apps (when most everything was x86 aka 32-bit) is that when you compile DotNET with "AnyCPU" it would crash on x64 systems and if you compile DotNET that accesses WinAPI as x64, it will crash because (back then - not really sure about 2020 status) WinAPI is explicitly 32-bit.

    So my first suggestion is to go through your VS Solution and look at the Build Configuration for any and all Projects included therein.  If you have your "Startup App" set to compile explicitly as x86 aka 32-bit but then any of your DLLs or other dependency projects are set to compile for AnyCPU or x64, that could be your issue.


    Before you can learn anything new you have to learn that there's stuff you don't know.

    Tuesday, August 11, 2020 7:33 PM
  • Thank you for the suggestion. 

    Here are a few things about the program:

    • The program is built with target as x86 specifically. No AnyCPU or x64. 
    • It runs perfectly fine on all x86 and x64 systems - Win 7, 8, 10.
    • All DLLs are x86 based. 

    It is just on this specific Windows 10 machine that it runs and freezes after sometime.

    The application compatibility checker marked our program as incompatible. Wonder why it did so.

    Wednesday, August 12, 2020 5:42 AM
  • Thank you for the suggestion. 

    Here are a few things about the program:

    • The program is built with target as x86 specifically. No AnyCPU or x64. 
    • It runs perfectly fine on all x86 and x64 systems - Win 7, 8, 10.
    • All DLLs are x86 based. 

    It is just on this specific Windows 10 machine that it runs and freezes after sometime.

    The application compatibility checker marked our program as incompatible. Wonder why it did so.

    Then it's idiosyncratic to that one Win10 installation/configuration.  This is not terribly uncommon.  Maybe they have an update or two your other clients don't, or maybe they're missing a few updates.  Maybe they're using some fringe AVS.  Maybe have them uninstall and reinstall the version of DotNET your application targets.

    Edit:  It occurred to me that AVS means a lot of things in 2020.  Even specifically as a proper noun.  I'm talking about Anti-Virus Software.  There are a lot of "fringe" choices out there, meaning non-mainstream/non-commercial/non-professionally-engineered, which cause lots of weird problems for their users.

    Since it's just the 1 system and the built-in compat troubleshooter fixed it, I wouldn't worry about it.


    Before you can learn anything new you have to learn that there's stuff you don't know.


    Wednesday, August 12, 2020 2:24 PM