For the complete documentation index, see llms.txt. This page is also available as Markdown.

変数とワイルドカード

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.1app-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.1app-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が設定されている場合、製品が完全パスパターンを組み立てます。例:

ApplicationCheck
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 ではスラッシュと適切な変数を使います。拡張子のない実行ファイルも多くあります。

パターン (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では例えば *.EXEscript.exe にマッチしません。

  • 過度に広いパターン: {programfiles}\*\*.exe はProgram Filesの2階層下のすべての .exe にマッチします。ユーザー、マシン、その他のルールで範囲を絞ります。

  • Windowsでのスラッシュ混在: Windowsパスではバックスラッシュを推奨します。製品側で正規化されることもありますが、一貫して \ を使う方が混乱が少なくなります。


リファレンス

  • 参考資料: 変数 — 組み込み変数 (Windows、Linux、macOS、アプリ固有)、カスタム変数、保護パス。

  • 参考資料: ワイルドカード — アプリケーションのワイルドカード、フォルダの先頭一致、避けるべきパターン。

最終更新