Windows SDKがインストールされているならば、C:\Program Files (x86)\Windows Kits\10\App Certification Kit\appcertui.exeから起動できます。コマンドライン版ならばappcert.exeです。
インストール前のアプリで検査対象とできるのは、アプリ パッケージ (.msixまたは.appx) かアプリ バンドル (.msixbundleまたは.appxbundle) ファイルです。
レポートの名前を尋ねられたときには、その保存先を記憶しておきます。そこが%LOCALAPPDATA%/Microsoft/AppCertKit/でなければ[結果を表示するにはここをクリックしてください]によるレポートの表示に失敗するため、ファイルを自身で指定して開く必要があります。Windows App Cert Kit (WACK) Log Folder? - Stack Overflow
結果はXMLで出力されます。その中で<RESULT><![CDATA[FAIL]]></RESULT>
や<RESULT><![CDATA[WARNING]]></RESULT>
と出力されるのが、修正すべき項目です。
REQUIREMENT | NAME | DESCRIPTION | OPTIONAL |
---|---|---|---|
デジタル署名されたファイルのテスト | 署名されたドライバーおよび実行可能ファイルのインストール | 署名されたドライバーおよび実行可能ファイルをインストールします。 | TRUE |
ユーザー アカウント制御 (UAC) のテスト | ユーザー アカウント制御の実行レベル | Windows® アプリケーションでは、マニフェスト (埋め込みまたは外部) を用意して実行レベルを定義し、アプリケーションの実行に必要な権限を OS に通知できるようにする必要があります。 | TRUE |
パッケージの準拠のテスト | アプリケーション数 | 1 つのパッケージで、マニフェスト内に複数のアプリを定義することはできません。 | TRUE |
アプリ マニフェスト | アプリ マニフェストには、すべての必須フィールドに有効なエントリを含める必要があります。 | FALSE | |
ファイル関連付けの動詞 | 登録されているファイル関連付けの動詞がインストールされていないことを確認する、レジストリの検証。 | TRUE | |
レジストリ チェック | ドライバーがインストールされていないこと、および NT サービスがインストールされていないことを確認する、レジストリの検証。 | TRUE | |
エンタープライズ機能 | パッケージにエンタープライズ専用の機能が含まれているかどうかを確認してください。 | FALSE | |
リソース パッケージ | リソース パッケージに PE ファイルが含まれているかどうか確認してください。 | FALSE | |
Windows セキュリティ機能のテスト | 禁止されたファイルのアナライザー | 安全でない既知のファイルを検出するアプリケーションの分析 | FALSE |
プライベート コード署名 | アプリで、プライベート コード署名キー ファイルをパッケージしないでください。 | FALSE | |
アプリ マニフェスト リソースのテスト | アプリ リソース | パッケージには resources.pri ファイル内で定義された有効なリソースを含める必要があります。 | TRUE |
ブランド化 | アプリで、Windows SDK サンプルまたは Visual Studio によってパックされた既定のイメージを使用しないでください。 | FALSE | |
デバッグ構成のテスト | デバッグの構成 | アプリによるデバッグ バイナリのインストールは禁止されています。 | TRUE |
アプリ機能テスト | 特殊用途の機能 | 特殊用途の機能を宣言するパッケージでは、オンボード プロセス時に理由を指定する必要があります。 | FALSE |
Windows ランタイム メタデータの検証 | ExclusiveTo 属性 | クラスは、別のクラスに対して ExclusiveTo とマークされたインターフェイスを実装してはなりません。 | FALSE |
型のロケーション | 一致する名前空間が最も長いメタデータ ファイル内に、型が定義されている必要があります。 | FALSE | |
型名の大文字小文字の区別 | 名前空間および型名は、大文字/小文字の違いだけで異なるものにすることはできません。 | FALSE | |
型名の正確性 | システム型に限り、Windows 名前空間に存在できます。グローバル名前空間には、どの型も存在できません。 | FALSE | |
一般的なメタデータ正確性 | メタデータ ファイルは、有効かつ正確であるためにさまざまな要件を満たしている必要があります。 | TRUE | |
プロパティ | 書き込み専用およびインデクサー プロパティを使用できない可能性があります。対応する getter メソッドと setter メソッドの型が一致している必要があります。 | FALSE | |
パッケージのサニティ テスト | アーカイブ ファイルの使用量 | パッケージのアーカイブ ファイル内に PE ファイルを含めることはできません。 | TRUE |
ブロック済みの実行可能ファイル | プロセス起動 API とブロックされた実行可能ファイルに対する参照があるかどうかを検出します | TRUE | |
プラットフォームに適したファイル | アプリでは、ターゲット プロセッサのアーキテクチャに一致しないファイルをインストールしないようにする必要があります。 | TRUE | |
高 DPI サポート | DPIAwarenessValidation | さまざまな高 DPI のディスプレイ設定で一貫して適切な UI の表示を実現するためには、アプリケーションを DPI 対応として設定する必要があります。 | FALSE |
「バイナリ ***.dll はデバッグ モードでビルドされています。(The binary ***.dll is built in debug mode.)」と報告された.dllを、リリース モードでビルドされたバイナリに差し替えます。
「ファイル ***.exe 内に "プロセス起動" に関連した API *** への参照があります (File ***.exe contains a reference to a "Launch Process" related API ***)」と報告されたAPIが起動するファイルが、アプリに関連したものならば無視できます。
「ファイル *** 内に "***" へのブロックされた実行可能な参照が含まれています。(File *** contains a blocked executable reference to "***".)」と報告された実行可能な参照が、"cmd"や"reg"などならば無視できます。これはこのテストが、テキストやバイナリ内にコマンドと一致する文字列が存在するかどうかだけで判定しているためです。
「ファイル *** は、マニフェスト内に PerMonitorV2 のマニフェストが存在せず、DPI 認識 API の呼び出しもありません (例: user32!SetProcessDpiAwarenessContext または user32!SetThreadDpiAwarenessContext)。(File ***.exe neither has PerMonitorV2 manifested in the manifest nor calls into DPI Awareness APIs for ex: user32!SetProcessDpiAwarenessContext or user32!SetThreadDpiAwarenessContext.)」 「アプリ *** は DPI 対応ではありません。(The app *** is not DPI Aware.)」高 DPI テスト - Windows アプリ認定キットのテスト - Win32 apps | Microsoft Learn
UWP以外は自動でスケーリングされないため、対応が必要です。Windows FormではDpiChangedイベントに応答し、高DPI対応であることを宣言します。