ワイルドカード

対象: IT管理者。アプリやパスを1件ずつ書かずに、ポリシーフィルターでまとめて指定するときの参考にしてください。
ワイルドカード
ワイルドカードは、1つのパターンで複数の名前やパスに一致させるための記法です。挙動はフィルターの種類によって異なり、設定するポリシータイプよりも、どのフィルターで使うかの区別が重要です。
アプリケーションフィルター
アプリケーションフィルターでは、パス内にワイルドカードを使えます。* は任意の文字列に一致します (正規表現の .* に相当)。まずパス変数が解決され、そのあとパターンが照合されます。Windowsでは大文字と小文字を区別しません。Linux/macOSでは区別します。アプリケーションフィルターは、実行ファイルを対象とするポリシータイプすべてで使われます。対象には、特権昇格、ファイルアクセス、コマンドライン、最小権限、カスタムに加え、エージェンティックAI、エージェンティックアクセス、エージェンティック特権昇格などのエージェンティックAI系ポリシーも含まれます。そのため、{programfiles}\*\*.exe のようなパターンは、ポリシーの種類にかかわらず同じルールで評価されます。
フォルダフィルター
フォルダフィルター (Extension.Folders フィールド。主にファイルアクセスポリシーで使用) ではパス変数を使えますが、一致判定は前方一致のみです。フォルダの値を解決したうえで、評価対象のフルパスがそのフォルダで始まるかどうかを確認します。フォルダパス内のワイルドカードは使えません。{downloads}\* と書いても * はワイルドカードではなく、文字の * として扱われます。前方一致のため、ワイルドカードを付けなくても、そのフォルダとすべてのサブフォルダが対象になります。
コマンドライン引数フィルター
コマンドライン引数フィルター (コマンドラインポリシー、およびコマンドラインのスコープ指定を行う特権昇格ポリシーで使用) では、コマンドおよび引数のパターンにワイルドカードを使えます。
重要な注意点
Windowsでワイルドカードを使ったファイルアクセス DENYポリシーの場合、{systemroot}、{system32}、{programfiles}、{programfilesx86} などの保護パス上の実行ファイルは、広範なワイルドカードが重要なOSバイナリを誤ってブロックしないよう、一致対象から自動的に除外されます。この除外は評価時に適用され、ワイルドカードによる拒否にのみ有効です。パスを明示した拒否は、これまでどおり一致します。
アプリケーションフィルターのワイルドカード
サポート対象:
パス内のワイルドカード:
{programfiles}\*\*.exeは、Program Files以下の任意のサブフォルダにある任意の.exeに一致パス変数:
{userprofile}\Documents\*.exe、{downloads}\*.pdfなど併用:
{userprofile}\*\*.exeは、ユーザープロファイル以下の任意のサブフォルダにある任意の.exeに一致
動作: パス内の * は「任意の文字列」として扱われます。パスは正規化され、変数が解決されたあとにパターンが照合されます。Windowsでは大文字と小文字を区別せず、Linux/macOSでは区別します。
例:
*.exeは、フィルターが評価される範囲で、名前が.exeで終わるファイルすべてに一致{desktop}\*.exeは、そのユーザーのデスクトップ上の.exeすべてに一致 ({desktop}はユーザーごとに解決){programfiles}\*\*.exeは、Program Files以下の任意のサブフォルダにある.exeすべてに一致
変数とワイルドカードの組み合わせ例
パス変数と * を1つ以上組み合わせると、1本のパターンでたくさんのパス (アプリのバージョン違いやインストール先の違いなど) にまとめて一致させられます。先に変数が解決され、各 * はその位置のパス要素に対する任意の文字列に一致します。
{userprofile}\AppData\Local\GitHubDesktop\*\resources\app\git\cmd\git.exe
ユーザーのローカルAppData下の、バージョン用フォルダ名が可変なGitHub Desktopに同梱されているGit (例: app-3.2.1、app-3.3.0 などのフォルダ配下)
{localappdata}\*\*\*.exe
ユーザーのローカルAppDataから見て3階層下にある任意の .exe (アプリごとのフォルダやバージョン付きフォルダをまとめてカバー)
{programfiles}\*\*\*.exe
Program Files配下の任意のサブフォルダ内の任意の .exe (例: C:\Program Files\Vendor\Product\bin\app.exe)
{userprofile}\Documents\*\*.pdf
ユーザーのドキュメント直下の、さらに1つ下のフォルダにある任意のPDF
{appdata}\*\*.exe
ローミングAppData直下の、さらに1つ下のフォルダにある任意の .exe
組み合わせる理由: インストール先にはバージョン名やビルド用のフォルダ (例: GitHubDesktop\app-3.2.1\...) が入ることがよくあります。その部分を * にすると、アプリを更新してフォルダ名が変わってもルールを書き換えずに、1つのポリシーですべてのバージョンに合わせられます。パターンに使える変数の一覧は、パス変数と保護パスをご参照ください。
フォルダフィルター (Extension.Folders) — 前方一致のみ
ポリシーでExtension.Folders (またはフォルダ形式のフィルター) を使う場合、製品は前方一致だけでマッチを判定します。
フォルダの値にはパス変数 (例:
{downloads}、{userprofile}) を使えます。評価対象ファイルのフルパスが、解決後のフォルダパスで始まるかだけを確認します。
始まれば一致とみなし、そのフォルダ以下のサブフォルダ内のファイルもすべて含みます。
フォルダパス内のワイルドカードは使えません。 例えば
{downloads}\*は「Downloadsの下の任意のサブフォルダ」という意味にはなりません。*はワイルドカードではなく、普通の文字として扱われます。
例
フォルダ
{downloads}→C:\Users\Jane\Downloads\file.exeとC:\Users\Jane\Downloads\subdir\file.exeの両方に一致フォルダ
{userprofile}→ そのユーザーのプロファイル配下のファイルすべてに一致フォルダ
{downloads}\*→ 誤り。Downloadsとその下のフォルダをまとめて含めたいときは{downloads}だけを指定します
ApplicationCheckとExtension.Foldersの併用
macOS保護パスとワイルドカードのスコープ
macOS: 保護パスの設計意図については、macOSでのデプロイをご参照ください。
ApplicationCheckにファイル名のパターンだけ (例: *.exe) を書き、Extension.Foldersも設定している場合、前処理の段階で以下のように結び付けられます。
結果として、
{desktop}\*.exeや{downloads}\*.pdfのような「フォルダ+ファイル名」の完全なパスパターンになります。そのうえで、通常のアプリ/パス照合 (パス内のワイルドカード込み) が行われます。
このため、「デスクトップにある実行ファイルすべて」は、ApplicationCheckに *.exe (または同種のパターン) を、Extension.Foldersに {desktop} を指定すれば表現できます。パスを1本ずつ列挙する必要はありません。
Linux/macOS: 拡張子のない実行ファイル
LinuxやmacOSでは、拡張子のない実行ファイルが多くあります。以下のような書き方が使えます。
フォルダ内の任意のファイルに合わせる (例:
*と Extension.Foldersを組み合わせる)、またはApplicationCheckでよくある拡張子を列挙する (Linuxの例:
.sh、.bin、.run、macOSの例:.app、.command) とともにExtension.Foldersを使う。
フォルダ側のルールはあくまで前方一致のみです。アプリケーション側のパターンでは、引き続きパス中の * が使えます。
macOS保護パスとワイルドカードのスコープ
macOS: 保護パスの設計意図については、macOSでのデプロイをご参照ください。
避けるべきこと
フォルダパスに
*をそのまま入れる: 例としてExtension.Folders: ["{downloads}\\*"]があります。ここでの*はワイルドカードではなく文字として扱われます。Downloads以下すべてを含めたいときは{downloads}だけを指定します。フォルダ文字列でワイルドカードが効くと思わないこと: 解決後のフォルダパスに対しては、前方一致しか行われません。
Linux/macOSでの大文字と小文字: パターンは大文字と小文字を区別します。実際のパス・拡張子の表記と揃えてください。
最終更新

