> ## 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、用於服務驗證的授權權杖、商店帳戶不相符的處理，以及沙箱切換。

Windows PC 會帶來 XBOX 上的 XStore 所沒有的複雜情況：PC 上的 Microsoft Store 帳戶可能與玩家的 XBOX 帳戶不同、沙箱對商店作業的影響方式不同，而授權權杖流程可讓您的服務在不信任用戶端的情況下驗證擁有權。

## 基本 DRM 和授權檢查

PC 上的 XStore 包含基本的 DRM 檢查：遊戲在允許遊玩之前，會先確認自己具有作用中的授權。此檢查會在啟動時透過 `XStoreQueryGameLicenseAsync` 執行。

如果找不到授權：

1. 向玩家顯示商店 UI，以供購買或登入。
2. 沒有作用中的授權時，不要讓遊戲繼續進行。

對於盜版風險較高的遊戲，請加上額外的檢查：

* 從您的服務透過[授權權杖](#license-tokens-for-service-validation)驗證授權。
* 在遊戲進行期間定期重新檢查 `XStoreQueryGameLicenseAsync`；授權遺失時予以撤銷。

## 開放式與限制式授權

兩種 PC 授權模型：

* **開放式授權** — 玩家可以使用任何具有授權的 Microsoft Store 帳戶執行遊戲。適用於共用 PC。
* **限制式授權** — 玩家必須以獲得授權的 Microsoft 帳戶登入。適用於希望加強防盜版的遊戲。

請在 Partner Center 中您產品的 \[屬性] 下進行設定。

## 用於服務驗證的授權權杖

如果您的遊戲伺服器需要確認玩家擁有該遊戲 (例如在授與遊戲內資產之前)，請使用**授權權杖**：

1. 用戶端呼叫 `XStoreQueryLicenseTokenAsync` 以取得短期有效的已簽署權杖。
2. 用戶端將權杖傳送給您的服務。
3. 您的服務使用 Microsoft 公開金鑰驗證權杖的簽章。
4. 您的服務信任權杖中有關授權狀態的宣告。

這可避免用戶端在沒有證明的情況下宣稱擁有權，也可避免您的服務在每個工作階段輪詢 Microsoft Store API。

## 商店帳戶不相符的案例

常見的 PC 問題：玩家以某個 Microsoft 帳戶登入 Windows / XBOX 應用程式，但 **Microsoft Store** 卻以不同的帳戶登入。

XStore API 會依循商店的已登入帳戶，這可能導致：

* 即使登入 XBOX 的玩家在另一個帳戶上擁有遊戲，遊戲仍顯示「購買」。
* 購買成功，但記在錯誤的帳戶上。

處理方式：

1. 偵測不相符的情況 — 比較 `XUserGetId` 與 `XStoreQueryGameLicenseAsync` 的資訊。
2. 顯示說明不相符情況的 UI，並提供切換選項。
3. 如果玩家無法切換，請提供透過 XBOX 應用程式重新導向的選項，以修正商店帳戶。

## 商店作業的沙箱切換

XBOX services 沙箱 (透過 `XblPCSandbox.exe` 設定) 無法完全控制 PC 上商店所使用的沙箱。商店作業需要額外的步驟：

1. 切換 XBOX services 沙箱。
2. 在新的沙箱內容中重新啟動 **Microsoft Store 應用程式**。
3. 確認 `XStoreQueryGameLicenseAsync` 傳回開發沙箱的資料。

若未正確切換商店，會導致令人混淆的測試結果：XBOX services 看到的是開發沙箱，但商店呼叫卻送到 RETAIL。

## PC 商務的測試檢查清單

提交之前：

1. **使用未擁有任何項目的測試帳戶進行測試** — 驗證購買 / 試用 / 登入流程。
2. **使用擁有基礎遊戲的測試帳戶進行測試** — 確認不會出現「購買」提示。
3. **測試商店帳戶不相符** — 以一個帳戶登入 Windows，以另一個帳戶登入商店。
4. **測試試用版 → 購買流程** — 確認試用版授權無需重新啟動即可切換為完整授權。
5. **測試離線啟動** — PC 遊戲必須能在合理的快取授權期間內離線啟動和遊玩 (不連線商店)。
6. **測試沙箱切換** — 確認切換後商店呼叫會傳回開發沙箱的產品。

## 相關 API 文件

* [XStore API 參考](/zh-TW/reference/system/xstore/xstore_members) — `XStoreQueryGameLicenseAsync`、`XStoreQueryLicenseTokenAsync`
* [XUser API 參考](/zh-TW/reference/system/xuser/xuser_members) — `XUserGetId`、`XUserIsStoreUser`

## 另請參閱

* [XStore 深入探討](/zh-TW/publishing/xstore-commerce/xstore-overview)
* [XStore S2S API](/zh-TW/publishing/xstore-commerce/xstore-authenticating-service)
* [PC 沙箱切換器](/zh-TW/tools/tools-services/live-pc-sandbox-switcher)
* [在 PC 上啟動](/zh-TW/tools/tools-pc/launching-on-pc)


## Related topics

- [PC 上的 XStore — DRM、许可证令牌和沙盒](/zh-CN/publishing/xstore-commerce/xstore-pc.md)
- [XStore on PC — DRM, license tokens, and sandboxes](/publishing/xstore-commerce/xstore-pc.md)
- [基础 DRM 与许可证检查](/zh-CN/publishing/xstore-commerce/xstore-basic-drm.md)
- [XStore en PC: DRM, tokens de licencia y sandboxes](/es/publishing/xstore-commerce/xstore-pc.md)
- [PC의 XStore — DRM, 라이선스 토큰, 샌드박스](/ko/publishing/xstore-commerce/xstore-pc.md)
