Device License SDKPlatform 13.3.7 · SDK 3.1.0

維護

本機身分重置

只刪除目前 Client 的 registration.json 與指定 TPM Key,不改動 Server-side Machine。

這個範例解決什麼問題

本機重置用於修復損壞的註冊資料、測試重新啟用,或在管理員已完成換機流程後清理本機狀態。它刻意不提供解除 Server Machine 的能力。

適合使用的場景

  • registration.json 損壞或與目前 Product Namespace 不一致。
  • 測試環境需要重新執行第一次啟用流程。
  • 管理員已在管理介面完成 Machine 解除,現在要清理舊電腦的本機 TPM Key。

為什麼採用這種設計

  • Client 不應能自行解除 Server 綁定,否則可被用來繞過 Machine 數量限制。
  • expected_key_name 避免誤刪除同一台電腦上其他產品的 TPM Key。
  • 本機與 Server 的生命週期分開,讓高風險操作只留在受驗證的管理介面。

程式實際怎麼執行

同步、本機維護操作。只讀/刪 registration 與指定 TPM Key,完全不呼叫 Server。

SDK 自動完成

  • expected_key_name 必須精確匹配。
  • 回傳哪些本機資產被移除。

你的程式必須負責

  • 先顯示完整診斷並二次確認。
  • 告知 Server Machine 不會釋放。

呼叫時機/頻率

  • 僅限支援流程,不可在一般驗證失敗時自動執行。

成功時應看到

  • 本機狀態被清理,Server 沒有任何變化。

失敗處理

  • TPM 刪除失敗時保留診斷,不做廣域刪除。

建議整合步驟

  1. 步驟 1

    讀取 local_identity_info() 並顯示即將刪除的 Namespace 與 Key Name。

  2. 步驟 2

    要求使用者二次確認,並把 expected_key_name 傳給 reset_local_identity()。

  3. 步驟 3

    確認 registration.json 與指定 TPM Key 已移除。

  4. 步驟 4

    需要重新使用時,重新執行首次啟用。

完整程式碼

公開範例使用 Placeholder,重點是理解資料流與 API 行為。正式 Gateway URL、Product UUID、Namespace 與 Public Key 請向授權管理員取得;可直接運行的完整範例由管理員在 Admin SDK 整合中心下載。

python
"""Delete only this client's local registration and matching TPM key."""

from keygen_device_sdk import LicenseSDKError





def reset_this_computer(client):

    try:

        info = client.local_identity_info()

        return client.reset_local_identity(

            expected_key_name=info.key_name,

            delete_registration=True,

            delete_tpm_key=True,

        )

    except LicenseSDKError as exc:

        raise RuntimeError(f"Local reset failed: {exc}") from exc



# This operation never deactivates the server-side Machine.

上線前至少測試

  • 錯誤 key name、部分/完整刪除、Server Machine 不變。

常見錯誤

  • 不要把 expected_key_name 留空或改成其他產品的 Key Name。
  • 不要宣稱本機重置會釋放 Server-side Machine。
  • 不要在未備妥 License Key 或管理員協助前任意重置正式設備。