変数とワイルドカード
KEPMポリシーで使う高度な構成変数とワイルドカード

対象: IT管理者向けです。ポリシー、ジョブ、パスにおけるパス変数とワイルドカードの多数の例を示し、ユーザー、バージョン、インストール場所が異なるアプリケーションやフォルダにマッチさせる方法を説明します。
変数とワイルドカードの一覧およびルールの詳細は、参考資料: 変数 および 参考資料: ワイルドカード をご参照ください。
要点のおさらい
変数:
{userprofile}、{programfiles}、{localappdata}など。評価時に実パスへ展開されます。パターンではWindowsではバックスラッシュ (\)、Linux/macOSではスラッシュ (/) を使います。ワイルドカード: アプリケーションパスでは
*はそのセグメントで「任意の文字列」を意味します。フォルダフィルター (Extension.Folders) では先頭一致のみで、フォルダパスに*は使いません。組み合わせ: 先に変数を展開してからマッチします。例:
{userprofile}\*\*.exeはユーザープロファイル配下の任意のサブフォルダ内の任意の.exeに一致します。
変数とワイルドカードの組み合わせ
変数とワイルドカードは、アプリケーションまたはファイルパスのパターンで一緒に使えます。変数が先に展開され (例: ユーザーのプロファイルパス)、続いて * がそのパス内の任意の文字列にマッチします。1つのパターンで複数バージョンや複数のインストール場所をカバーできます。
例:
{userprofile}\AppData\Local\GitHubDesktop\*\resources\app\git\cmd\git.exe
GitHub Desktop同梱のGit。ユーザーのLocal AppData配下の任意のバージョンフォルダ (例: app-3.2.1 や app-3.3.0) に対応。
{localappdata}\*\*\*.exe
ユーザーのLocal AppDataから3階層深い任意の .exe (アプリごとのバージョン付きフォルダなど)。
{programfiles}\*\*\*.exe
Program Files配下の任意のサブフォルダ内の任意の .exe (例: C:\Program Files\Vendor\Product\bin\app.exe)。
{userprofile}\Documents\*\*.pdf
ユーザーのDocumentsの1階層下の任意のサブフォルダ内の任意のPDF。
{appdata}\*\*.exe
Roaming AppDataの1階層下の任意のサブフォルダ内の任意の .exe。
注:
OS固有のルールでは、パターンにWindowsではバックスラッシュ (
\)、Linux/macOSではスラッシュ (/) を使います。パス変数はプラットフォームごとに正しい区切りへ展開されます。1つの
*はそのセグメントで任意の文字列 (0文字含む) にマッチします。複数の*セグメントで、バージョン番号やアプリ名など可変深度のフォルダを表現できます。
例
1. バージョン付きまたはインストール形態の違うアプリ (1パターンで複数バージョン)
パスにバージョンやビルド用フォルダがある箇所に単一または複数の * を置くと、1つのポリシーですべてのバージョンをカバーできます。
{userprofile}\AppData\Local\GitHubDesktop\*\resources\app\git\cmd\git.exe
GitHub Desktop 同梱の Git。* が app-3.2.1 や app-3.3.0 などのバージョンフォルダにマッチ。
{localappdata}\Programs\*\*\*.exe
Local\Programs 配下でベンダー/製品/バージョン構造のアプリ。
{programfiles}\Microsoft VS Code\*\Code.exe
インストール済みバージョンフォルダが異なる VS Code。
{programfiles}\*\*\bin\*.exe
Program Filesから3階層下の任意のベンダーの bin フォルダ。
{programfilesx86}\*\*\*.exe
Program Files (x86) の 3階層下の任意の32ビットアプリ。
2. ユーザープロファイルとAppData (ユーザーごとのパス)
{userprofile}、{appdata}、{localappdata} などは要求ユーザーのパスに展開されます。同一ポリシーを全ユーザーで使えます。
{userprofile}\*.exe
ユーザーのプロファイル直下の任意の .exe。
{userprofile}\Documents\*.exe
ユーザーのDocuments内の任意の .exe。
{userprofile}\Documents\*\*.pdf
Documentsの1階層下の任意のサブフォルダ内の任意のPDF。
{appdata}\*\*.exe
Roaming AppDataの1階層下の任意のサブフォルダ内の任意の .exe (例: AppData\Roaming\Vendor\app.exe)。
{localappdata}\*\*\*.exe
Local AppDataから3階層深い任意の .exe (バージョン付きアプリフォルダを含む)。
{userdesktop}\*.lnk
ユーザーのデスクトップ上の任意のショートカット。
{userprofile}\Downloads\*.exe
ユーザーのDownloads内の任意の .exe (Windows。macOSでは {downloads} を使用)。
3. システムとProgram Files (全ユーザー共通)
マシン上の全員に同じパスへ展開されます。システムツールやインストール済みソフト向けです。
{system32}\*.exe
System32直下の任意の実行ファイル。
{system32}\*\*.exe
System32の1階層下の任意のサブフォルダ内の任意の .exe。
{programfiles}\*\*.exe
Program Filesの1階層下の任意のサブフォルダ内の任意の .exe。
{programfiles}\*\*\*.exe
最大3階層のサブフォルダ内の任意の .exe (例: Vendor\Product\bin\app.exe)。
{programfiles}\*\*\*\*.exe
より深いベンダー/製品/バージョン/binレイアウト。
{syswow64}\*.exe
SysWOW64内の32ビット実行ファイル。
{programdata}\*\*.exe
ProgramDataの1階層下の任意のサブフォルダ内の任意の .exe。
4. Keeperアプリのパス (プラグインとジョブ構成)
アプリケーション用変数で、インストールディレクトリに依存しない構成にします。
{approot}\Plugins\KeeperPolicy\KeeperPolicy.exe
プラグインJSON内のプラグイン実行ファイルパス。
{pluginroot}\KeeperPolicy\bin\Release\net8.0\KeeperPolicy
プラグインルートを使ったプラグインパス。
{jobroot}\bin\MyTool\MyTool.exe
ジョブツリー内のジョブ実行ファイル。
{approot}\Localization\LocaleValues.json
ドキュメントやスクリプトでのロケールファイルパス。
5. フォルダフィルター (Extension.Folders) — 先頭一致のみ、* 不可
* 不可フォルダフィルターは先頭一致です。完全パスがそのフォルダパスで始まるかどうかを判定します。変数は使えます。フォルダパスにワイルドカードは使えません (* は文字として扱われます)。
{downloads}
ユーザーのDownloads配下のすべてのファイル (サブフォルダ含む)。
{userprofile}
ユーザーのプロファイル配下のすべてのファイル。
{documents}
ユーザーのDocuments配下のすべてのファイル。
{desktop} または {userdesktop}
ユーザーのデスクトップおよびデスクトップのサブフォルダ上のすべてのファイル。
{programfiles}
Program Files配下のすべてのファイル。
{localappdata}
ユーザーのLocal AppData配下のすべてのファイル。
誤り: {downloads}\* — * はリテラルとして扱われ、「任意のサブフォルダ」の意味にはなりません。Downloads 全体を指すには {downloads} を使います。
6. ApplicationCheckとExtension.Foldersの併用
ApplicationCheckにファイル名パターン (例: *.exe) があり、Extension.Foldersが設定されている場合、製品が完全パスパターンを組み立てます。例:
*.exe
{userdesktop}
ユーザーのデスクトップ上のすべての .exe。
*.exe
{downloads}
ユーザーのDownloads内 (サブフォルダ含む) のすべての .exe。
*.pdf
{documents}
ユーザーのDocuments配下のすべての PDF。
*.exe
{programfiles}
Program Files配下のすべての .exe (非常に広い範囲)。
*.exe
{localappdata}
ユーザーのLocal AppData配下のすべての .exe。
7. LinuxとmacOS
Linux/macOS ではスラッシュと適切な変数を使います。拡張子のない実行ファイルも多くあります。
{home}/*
ユーザーのホームディレクトリ内の任意のファイル。
{home}/bin/*
ユーザーの bin (または ~/bin) 内の任意のファイル。
{usr}/bin/*
/usr/bin 内の任意のファイル。
{usr}/local/bin/*
/usr/local/bin 内の任意のファイル。
{applications}/*.app
/Applications 内の任意の .app (macOS)。
{downloads}/*
ユーザーのDownloads内の任意のファイル (macOS)。
{library}/*
/Library 配下の任意のファイル (macOS)。
8. ジョブとプラグインのJSONパス (executablePath、arguments)
executablePathやタスクパス内の変数は、ジョブまたはプラグイン実行時に展開されます。
{jobroot}/bin/RedirectEvaluator/RedirectEvaluator
ジョブツリー内のリダイレクト評価実行ファイル。
{approot}\Jobs\bin\MyScript.exe
アプリケーションルート配下のスクリプト。
{pluginroot}\KeeperPolicy\bin\Release\net8.0\KeeperPolicy.exe
プラグインJSON内のプラグインexeパス。
{userprofile}\AppData\Local\MyApp\run.exe
ジョブが起動するユーザー固有アプリ (該当する場合は対象ユーザー向けに展開)。
9. パス深度による絞り込み (1個と複数の *)
*)1つの
*= 1つのパスセグメント (例: 1つのフォルダ名)。複数の
*= 複数セグメント (バージョン/製品/ベンダー構造)。
{programfiles}\*.exe
1セグメント
C:\Program Files\SomeApp.exe (稀)。
{programfiles}\*\*.exe
2セグメント
C:\Program Files\Vendor\app.exe。
{programfiles}\*\*\*.exe
3セグメント
C:\Program Files\Vendor\Product\app.exe。
{localappdata}\*\*.exe
2セグメント
C:\...\Local\Vendor\app.exe。
{localappdata}\*\*\*.exe
3セグメント
C:\...\Local\Vendor\Version\app.exe。
10. 実運用ポリシー例 (概念)
GitHub Desktop の Git を任意バージョンで許可: アプリケーションパス:
{userprofile}\AppData\Local\GitHubDesktop\*\resources\app\git\cmd\git.exeユーザーの Downloads 内の実行ファイルすべてにポリシーを限定: ApplicationCheck:
*.exe、Extension.Folders:{downloads}(またはプラットフォーム相当)。Program Files (x86) 内の任意の 32 ビットアプリにマッチ:
{programfilesx86}\*\*\*.exe(*の個数は典型的な深度に合わせて調整)。Keeper Jobs の bin 内のツールにマッチ: ジョブタスクで
executablePath:{jobroot}\bin\MyTool\MyTool.exe。特定のユーザーフォルダ内の実行ファイルのみ拒否: ApplicationCheckで
{userprofile}\Documents\Scripts\*.exeのようなパスを使うか、Extension.Folders{userprofile}\Documents\ScriptsとApplicationCheck*.exeを組み合わせる。
11. 避けるべきこと
Extension.Folders 内の
*: 例:["{downloads}\\*"]— Downloads全体には["{downloads}"]を使う。Linux/macOSの大文字小文字: パスと拡張子は大文字小文字を区別します。Linuxでは例えば
*.EXEはscript.exeにマッチしません。過度に広いパターン:
{programfiles}\*\*.exeはProgram Filesの2階層下のすべての.exeにマッチします。ユーザー、マシン、その他のルールで範囲を絞ります。Windowsでのスラッシュ混在: Windowsパスではバックスラッシュを推奨します。製品側で正規化されることもありますが、一貫して
\を使う方が混乱が少なくなります。
リファレンス
参考資料: 変数 — 組み込み変数 (Windows、Linux、macOS、アプリ固有)、カスタム変数、保護パス。
参考資料: ワイルドカード — アプリケーションのワイルドカード、フォルダの先頭一致、避けるべきパターン。
最終更新

