【Intune】アプリはインストールされたのにエラー「0x87D1041C」が出る原因と対策|検出ルールの見直し手順

Intune/Autopilot
【Intune】アプリはインストールされたのにエラー「0x87D1041C」が出る原因と対策|検出ルールの見直し手順

株式会社アーザスです。

Microsoft IntuneでWin32アプリ(.intunewin)を配信した際、PC上には正常にインストールされて起動もできるのに、管理画面にはエラーコード「0x87D1041C」が表示されるという現象に悩まされたことはありませんか?

実はこのエラー、インストーラーの不具合ではなく「検出ルール(Detection Rules)の不整合」が原因で発生しています。

本記事では、エラー「0x87D1041C」が発生する詳しいメカニズムから、現場でありがちな設定ミス、AppWorkload.log を使った迅速な原因特定手順と確実な対策までを分かりやすく解説します。

エラー「0x87D1041C」の原因とは?

Intuneにおけるアプリ配布は、大まかに以下の3ステップで処理されています。

  • [1] ダウンロード
  • [2] インストール実行
  • [3] 検出(Detection)

「0x87D1041C」というエラーは、[2]のインストール自体は正常に終了した(またはインストーラーが終了コード 0 を返した)にも関わらず、[3]の検出フェーズでIntuneがアプリの存在を確認できなかった時に発生します。

インストーラー自体の動作不良ではなく、Intuneの管理画面側で設定した「検出ルール(Detection Rules)」と、実際に展開されたクライアント環境との間に不整合が生じていることが主な原因です。

運用現場で発生しやすい「検出ルール」の不整合

手動でWin32アプリをパッケージングする際、検出ルールに「ファイル/フォルダのパス」や「レジストリ」を指定しますが、設計段階で以下のポイントが見落とされがちです。

32bit / 64bitのインストールパスの混同

64bit OS環境に対して32bitインストーラーを実行すると、アプリは C:\Program Files (x86) にインストールされます。しかし、検出ルール側で誤って C:\Program Files を指定しているとIntuneはアプリを見つけられません。

レジストリの「WOW6432Node」リダイレクト問題

32bitアプリのレジストリキーは、64bit Windows上では HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\… に自動的にリダイレクトされます。Intuneの検出ルール設定にある「32 ビット アプリに関連付けられている」の選択を誤ると、Intuneが対象のレジストリキーを見失う原因になります。

原因特定:AppWorkload.log の解析手順

管理画面のエラー表示だけでは具体的な不整合の箇所を特定できないため、対象クライアントPCのログから詳細を確認します。

ログファイルの場所

C:\ProgramData\Microsoft\IntuneManagementExtension\Logs\AppWorkload.log

このログを CMTrace.exe などのログビューアーで開き、調査を行います。

ポリシーが同期されると、指定された検出ルールのチェックロジックが実行され、その結果が出力されます。不整合が発生している場合、ログには以下のような記述が出力されます。

AppWorkload.log の出力例

[Win32App] Path doesn't exists: C:\Program Files (x86)\Dummy application Detected: False

このように applicationDetected: False という出力があれば、設定した検出ルールが実際の環境に合致していない(検出に失敗している)状況であることを示しています。

ログを見る際は、MCMでおなじみのツール「CMTrace.exe」やお好みのログビューアーを使用すると、エラーがハイライトされてとても見やすいです。

AppWorkload.logの出力例(CMTrace.exeでの表示)

エラー「0x87D1041C」の対処法

このエラーを未然に防ぐための対処法は以下の通りです。

検出ルールには「MSIプロダクトコード」を最優先で使用する

インストーラーが .msi 形式、あるいは内部的にMSIを使用しているタイプであれば、検出ルールにはファイルパスではなく「MSIプロダクトコード」({XXXXXXXX-XXXX-XXXX-…})を使用してください。リダイレクト問題や、バージョンアップに伴うパス変更の影響を排除できます。

MSIプロダクトコードは以下のPowershellコマンドで確認可能です。

Get-Package -ProviderName msi | Select-Object Name, Version, FastPackageReference

ファイルパスで検出する場合は「バージョン」を固定しない

.exe などのファイルパスを検出条件にする場合、「ファイルまたはフォルダーが存在すること」のみを条件に設定し、バージョンの比較チェックは極力避けるか、比較演算子(>=)を組み合わせる手法が有効です。

アプリの自動アップデートによって実行ファイルのバージョンが更新された際、Intuneが「指定バージョンが見つからない」として誤検知する事態を防ぎます。

まとめ:「0x87D1041C」は「インストールの失敗」ではない

Intune管理画面に表示される「0x87D1041C」は、「インストールの失敗」ではなく「検出ルールの不整合」を示しているケースが大半です。

原因解決に向けてインストーラーのパラメータ調整を繰り返す前に、まずはローカルPCの AppWorkload.log を確認し、検出ルールがどの値(パスまたはレジストリ)で空振りしているかを特定することが迅速なトラブルシューティングに繋がります。

次回の記事では、検証機を用いてこのエラー状態を意図的に作り出し、実際にログに記録される挙動を確認する再現検証手順を解説します。

エンドポイント管理の運用でお困りですか?

株式会社アーザスでは、MECM・Intune・Taniumの設計構築から、実務におけるディープなトラブルシューティングまで、現場に寄り添った技術サポートを提供しています。ぜひお問い合わせください。