# 変数とワイルドカード

<figure><img src="https://762006384-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MJXOXEifAmpyvNVL1to%2Fuploads%2FFh3832Xs83qbZiTuUOrN%2Fimage.png?alt=media&#x26;token=350e6473-6c63-4672-97c9-ad85cfa5f4f3" alt=""><figcaption></figcaption></figure>

**対象読者:** IT管理者向けです。ポリシー、ジョブ、パスにおける**パス変数**と**ワイルドカード**の**多数の例**を示し、ユーザー、バージョン、インストール場所が異なるアプリケーションやフォルダにマッチさせる方法を説明します。

変数とワイルドカードの一覧およびルールの詳細は、[参考資料: 変数](/keeperpam/jp/endpoint-privilege-manager/policies/path-variables.md) および [参考資料: ワイルドカード](/keeperpam/jp/endpoint-privilege-manager/policies/wildcards.md) をご参照ください。

***

## 要点のおさらい <a href="#quick-reminder" id="quick-reminder"></a>

* **変数:** `{userprofile}`、`{programfiles}`、`{localappdata}` など。評価時に実パスへ展開されます。パターンではWindowsでは**バックスラッシュ** (`\`)、Linux/macOSでは**スラッシュ** (`/`) を使います。
* **ワイルドカード:** **アプリケーションパス**では `*` はそのセグメントで「任意の文字列」を意味します。**フォルダフィルター** (Extension.Folders) では**先頭一致**のみで、フォルダパスに `*` は使いません。
* **組み合わせ:** 先に変数を展開してからマッチします。例: `{userprofile}\*\*.exe` はユーザープロファイル配下の任意のサブフォルダ内の任意の `.exe` に一致します。

## 変数とワイルドカードの組み合わせ <a href="#combining-variables-and-wildcards" id="combining-variables-and-wildcards"></a>

変数とワイルドカードは、アプリケーションまたはファイルパスのパターンで**一緒に**使えます。変数が先に展開され (例: ユーザーのプロファイルパス)、続いて `*` がそのパス内の任意の文字列にマッチします。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文字含む) にマッチします。複数の `*` セグメントで、バージョン番号やアプリ名など可変深度のフォルダを表現できます。

## 例 <a href="#examples" id="examples"></a>

### 1. バージョン付きまたはインストール形態の違うアプリ (1パターンで複数バージョン) <a href="#id-1-versioned-or-install-variant-apps-one-pattern-many-versions" id="id-1-versioned-or-install-variant-apps-one-pattern-many-versions"></a>

パスにバージョンやビルド用フォルダがある箇所に単一または複数の `*` を置くと、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 (ユーザーごとのパス) <a href="#id-2-user-profile-and-appdata-per-user-paths" id="id-2-user-profile-and-appdata-per-user-paths"></a>

`{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 (全ユーザー共通) <a href="#id-3-system-and-program-files-same-for-all-users" id="id-3-system-and-program-files-same-for-all-users"></a>

マシン上の全員に同じパスへ展開されます。システムツールやインストール済みソフト向けです。

| パターン                         | 一致する対象                                                      |
| ---------------------------- | ----------------------------------------------------------- |
| `{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アプリのパス (プラグインとジョブ構成) <a href="#id-4-keeper-app-paths-plugin-and-job-configs" id="id-4-keeper-app-paths-plugin-and-job-configs"></a>

**アプリケーション**用変数で、インストールディレクトリに依存しない構成にします。

| パターンまたはパス                                                   | 用途                        |
| ----------------------------------------------------------- | ------------------------- |
| `{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) — 先頭一致のみ、`*` 不可 <a href="#id-5-folder-filter-extensionfolders-prefix-only-no" id="id-5-folder-filter-extensionfolders-prefix-only-no"></a>

フォルダフィルターは**先頭一致**です。完全パスがそのフォルダパスで始まるかどうかを判定します。変数は**使えます**。フォルダパスにワイルドカードは**使えません** (`*` は文字として扱われます)。

| フォルダ値                           | 一致する範囲                                 |
| ------------------------------- | -------------------------------------- |
| `{downloads}`                   | ユーザーのDownloads配下のすべてのファイル (サブフォルダ含む)。  |
| `{userprofile}`                 | ユーザーのプロファイル配下のすべてのファイル。                |
| `{documents}`                   | ユーザーのDocuments配下のすべてのファイル。             |
| `{desktop}` または `{userdesktop}` | ユーザーのデスクトップおよびデスクトップのサブフォルダ上のすべてのファイル。 |
| `{programfiles}`                | Program Files配下のすべてのファイル。              |
| `{localappdata}`                | ユーザーのLocal AppData配下のすべてのファイル。         |

**誤り:** `{downloads}\*` — `*` はリテラルとして扱われ、「任意のサブフォルダ」の意味にはなりません。Downloads 全体を指すには `{downloads}` を使います。

### 6. ApplicationCheckとExtension.Foldersの併用 <a href="#id-6-applicationcheck-extensionfolders-combined" id="id-6-applicationcheck-extensionfolders-combined"></a>

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 <a href="#id-7-linux-and-macos" id="id-7-linux-and-macos"></a>

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) <a href="#id-8-job-and-plugin-json-paths-executablepath-arguments" id="id-8-job-and-plugin-json-paths-executablepath-arguments"></a>

**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個と複数の `*`) <a href="#id-9-narrowing-by-path-depth-one-vs-multiple" id="id-9-narrowing-by-path-depth-one-vs-multiple"></a>

* **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. 実運用ポリシー例 (概念) <a href="#id-10-real-world-policy-examples-conceptual" id="id-10-real-world-policy-examples-conceptual"></a>

* **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. 避けるべきこと <a href="#id-11-what-to-avoid" id="id-11-what-to-avoid"></a>

* **Extension.Folders 内の `*`:** 例: `["{downloads}\\*"]` — Downloads全体には `["{downloads}"]` を使う。
* **Linux/macOSの大文字小文字:** パスと拡張子は大文字小文字を区別します。Linuxでは例えば `*.EXE` は `script.exe` にマッチしません。
* **過度に広いパターン:** `{programfiles}\*\*.exe` はProgram Filesの2階層下のすべての `.exe` にマッチします。ユーザー、マシン、その他のルールで範囲を絞ります。
* **Windowsでのスラッシュ混在:** Windowsパスではバックスラッシュを推奨します。製品側で正規化されることもありますが、一貫して `\` を使う方が混乱が少なくなります。

***

### リファレンス <a href="#reference" id="reference"></a>

* [参考資料: 変数](/keeperpam/jp/endpoint-privilege-manager/policies/path-variables.md) — 組み込み変数 (Windows、Linux、macOS、アプリ固有)、カスタム変数、保護パス。
* [参考資料: ワイルドカード](/keeperpam/jp/endpoint-privilege-manager/policies/wildcards.md) — アプリケーションのワイルドカード、フォルダの先頭一致、避けるべきパターン。


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.keeper.io/keeperpam/jp/endpoint-privilege-manager/policies/policy-examples/advanced-examples/variables-and-wildcards.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
