We have discovered that some CRT versions use GetCurrentPackageId to determine whether the current process "is packaged", At least one of the ways that CRT behavior changes when running in a packaged process is thoroughly broken - it automatically initializes threads created via begin thread as MTA, assuming the app cannot initialize it any other way, so when the app tries to initialize it this fails. Other CRT behavior differences may be less disruptive, but in any case reverting them makes behavior consistent with the unpackaged case.
Several CRT problems are being looked at currently. I haven't noticed that call and effect. If you can identify a specific app with the single threaded requirement that would help.
We have discovered that some CRT versions use GetCurrentPackageId to determine whether the current process "is packaged", At least one of the ways that CRT behavior changes when running in a packaged process is thoroughly broken - it automatically initializes threads created via begin thread as MTA, assuming the app cannot initialize it any other way, so when the app tries to initialize it this fails. Other CRT behavior differences may be less disruptive, but in any case reverting them makes behavior consistent with the unpackaged case.
This sounds like a feasible fix for PSF .