> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# PC 上の XStore — DRM、ライセンス トークン、サンドボックス

> PC 固有の XStore の考慮事項: 基本的な DRM、サービス検証のためのライセンス トークン、Store アカウントの不一致処理、およびサンドボックスの切り替え。

Windows PC には、XBOX 上の XStore にはない複雑な要素があります。PC の Microsoft Store アカウントはプレイヤーの XBOX アカウントと異なる可能性がある、サンドボックスは Store 操作に異なる影響を与える、ライセンス トークン フローによりクライアントを信頼せずにサービスが所有権を確認できる、などです。

## 基本的な DRM とライセンス チェック

PC 上の XStore には、基本的な DRM チェックが含まれます。タイトルは、ゲームプレイを許可する前に有効なライセンスがあることを確認します。このチェックは、`XStoreQueryGameLicenseAsync` を通じて起動時に実行されます。

ライセンスが見つからない場合:

1. 購入またはサインインのための Store UI をプレイヤーに表示します。
2. 有効なライセンスなしにゲームプレイを続行させないでください。

海賊行為リスクの高いタイトルの場合は、追加のチェックを重ねます。

* サービスから[ライセンス トークン](#license-tokens-for-service-validation)経由でライセンスを検証します。
* ゲームプレイ中に定期的に `XStoreQueryGameLicenseAsync` を再チェックし、ライセンスが失われた場合に取り消します。

## オープン ライセンスと制限的ライセンス

PC のライセンス モデルは 2 つあります。

* **オープン ライセンス** — ライセンスを持つ任意の Microsoft Store アカウントでプレイヤーがタイトルを実行できます。共有 PC で有用です。
* **制限的ライセンス** — プレイヤーはライセンスを持つ Microsoft アカウントでサインインする必要があります。タイトルがより強力な海賊行為対策を必要とする場合に使用します。

パートナー センターの製品のプロパティで構成します。

## サービス検証のためのライセンス トークン

ゲーム サーバーがプレイヤーがタイトルを所有していることを確認する必要がある場合 (たとえば、ゲーム内アセットを付与する前) は、**ライセンス トークン** を使用します。

1. クライアントは `XStoreQueryLicenseTokenAsync` を呼び出して、短命の署名付きトークンを取得します。
2. クライアントはトークンをサービスに送信します。
3. サービスは Microsoft の公開鍵を使用してトークンの署名を検証します。
4. サービスは、ライセンス状態に関するトークンのクレームを信頼します。

これにより、クライアントが証拠なしに所有権を主張することを回避し、サービスがセッションごとに Microsoft Store API をポーリングすることを回避できます。

## Store アカウントの不一致シナリオ

PC で一般的な問題: プレイヤーが Windows / XBOX アプリに 1 つの Microsoft アカウントでサインインしているが、**Microsoft Store** は別のアカウントでサインインしている状態です。

XStore API は Store のサインイン アカウントに従うため、次のことにつながる可能性があります。

* XBOX サインインしたプレイヤーが別のアカウントで所有していても、タイトルに「購入」が表示される。
* 購入が誤ったアカウントに対して成功する。

処理方法:

1. 不一致を検出 — `XUserGetId` を `XStoreQueryGameLicenseAsync` の情報と比較します。
2. 不一致を説明する UI を表示し、切り替えを提供します。
3. プレイヤーが切り替えられない場合は、Store アカウントを修正するために XBOX アプリを通じてリダイレクトすることを提案します。

## Store 操作のためのサンドボックス切り替え

XBOX services のサンドボックス (`XblPCSandbox.exe` で設定) は、PC 上で Store が使用するサンドボックスを完全には制御しません。Store 操作には追加の手順が必要です。

1. XBOX services のサンドボックスを切り替えます。
2. 新しいサンドボックス コンテキストで **Microsoft Store アプリ** を再起動します。
3. `XStoreQueryGameLicenseAsync` が開発サンドボックスのデータを返すことを確認します。

Store を適切に切り替えないと、XBOX services は開発サンドボックスを見るが Store 呼び出しは RETAIL に到達するという、混乱を招くテスト結果につながります。

## PC コマースのテスト チェックリスト

送信前に:

1. **何も所有していないテスト アカウントでテスト** — 購入/体験版/サインイン フローを検証します。
2. **ベース ゲームを所有するテスト アカウントでテスト** — 「購入」プロンプトが表示されないことを検証します。
3. **Store アカウントの不一致をテスト** — Windows に 1 つのアカウント、Store に別のアカウントでサインインします。
4. **体験版 → 購入フローをテスト** — 再起動なしで体験版ライセンスが完全なライセンスに切り替わることを検証します。
5. **オフライン起動をテスト** — PC タイトルは、妥当なキャッシュ済みライセンス ウィンドウで、オフラインで起動およびプレイできる (Store 接続なし) 必要があります。
6. **サンドボックス切り替えをテスト** — 切り替え後に Store 呼び出しが開発サンドボックスの製品を返すことを確認します。

## 関連 API ドキュメント

* [XStore API リファレンス](/reference/system/xstore/xstore_members) — `XStoreQueryGameLicenseAsync`、`XStoreQueryLicenseTokenAsync`
* [XUser API リファレンス](/reference/system/xuser/xuser_members) — `XUserGetId`、`XUserIsStoreUser`

## 関連項目

* [XStore の詳細](/publishing/xstore-commerce/xstore-overview)
* [XStore S2S API](/publishing/xstore-commerce/xstore-authenticating-service)
* [PC Sandbox Switcher](/tools/tools-services/live-pc-sandbox-switcher)
* [PC での起動](/tools/tools-pc/launching-on-pc)


## Related topics

- [XBOX Requirements (XR) 認定リファレンス](/ja-jp/publishing/certification/xbox-requirements.md)
- [ライセンス供与テストの有効化](/ja-jp/publishing/xstore-commerce/xstore-licensing-setup.md)
- [基本的な DRM とライセンス チェック](/ja-jp/publishing/xstore-commerce/xstore-basic-drm.md)
- [XStore コマースの概要](/ja-jp/publishing/xstore-commerce/xstore-commerce-overview.md)
- [ライセンス トークンを使用してサービスでライセンスを検証する](/ja-jp/publishing/xstore-commerce/xstore-license-tokens.md)
