私のごく普通の MFC ベースの Windows アプリケーションは、Windows 7 で正常に動作します。しかし、Windows 8 で実行すると、UI が表示されません。最初はどういうわけか正しく起動していないと思っていましたが、最終的に、タスク マネージャーを起動すると、アプリケーションが実行されていることを示しているのに、「バックグラウンド プロセス」セクションの下にリストされていることに気付きました。
「バックグラウンド プロセス」であると判断するプロセスで Windows 8 が実行しているヒューリスティックは何ですか? または、おそらくアプリケーション マニフェストで、アプリケーションをフォアグラウンドプロセスとして明示的にラベル付けするためにできることはありますか?
Win7 および XP 互換モードで実行しようとしましたが、役に立ちませんでした。いくつかの Win8 マシンを試しましたが、すべて同じ結果が得られました。
このアプリは Visual Studio 2003 でコンパイルされており、新しいコンパイラを使用するオプションはありません。
「win8 バックグラウンド プロセス」のようなものをグーグルで検索しましたが、バックグラウンド プロセスを作成したい人しか得られません。一部の回答は、アプリケーション マニフェストを使用してバックグラウンド プロセスを登録する必要があることを示唆していますが、マニフェストを再確認したところ、バックグラウンド プロセスであることについては何も含まれていません。
これが私のマニフェストです。何かが見えない場合に備えて:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
version="1.0.0.0"
processorArchitecture="X86"
name="MyProductName"
type="win32"
/>
<description>My Product Description</description>
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="X86"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
<asmv3:trustInfo xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
<asmv3:security>
<asmv3:requestedPrivileges>
<asmv3:requestedExecutionLevel level="asInvoker" uiAccess="false" />
</asmv3:requestedPrivileges>
</asmv3:security>
</asmv3:trustInfo>
</assembly>
ここで回答が見つからない場合は、Microsoft にサポート インシデントを開いて助けを求める予定です。その時点まで到達したら、この質問を見つけたもので更新します。