(57)【要約】  ダイナミックソフトウェアアクティブ化システムにより、所望のビジネスプロセスに基づいて、オペレーティングシステムのアクティブ化および非アクティブ化が可能となる。ダイナミックソフトウェアアクティブ化システムは、ユーザが、オペレーティングシステムプロビジョニングサービスまたはサードパーティから、特定の期間にわたって、特定の使用量に関して、または他の任意の所望される方法で、オペレーティングシステムの使用を要求することを可能にする。プロビジョニングサービスは、ユーザまたはサードパーティからの要求を処理して、オペレーティングシステムの使用のプロビジョニングを行い、その要求に応答して、その要求により指定された特定のデバイスに対して、オペレーティングシステムの使用のプロビジョニングを行う。また、ダイナミックソフトウェアアクティブ化システムは、オペレーティングシステムを使用するデバイス上に配置されたローカルプロビジョニングモジュールも含み、ローカルプロビジョニングモジュールは、プロビジョニングサービスから受信した命令に基づいて、オペレーティングシステムのアクティブ化および非アクティブ化を行う。
2008521095.tif 000002
【特許請求の範囲】
【請求項１】
コンピューティングデバイスにおいてサービスのプロビジョニングを行うためのローカルプロビジョニングシステムであって、
前記コンピューティングデバイスにおいて、ある動作状態を強制するように適合されたエンフォースメントモジュールと、
（１）前記サービスの使用、および（２）前記サービスの使用を許可するプロビジョニングリソースの残余をモニタリングするように適合された計測モジュールと、
前記プロビジョニングリソースを消費し、前記プロビジョニングリソースを更新するように適合されたトランザクションエンジンと、
前記プロビジョニングリソースを提供するプロビジョニングパケットを受信するように適合された通信モジュールと
を備えたことを特徴とするローカルプロビジョニングシステム。
【請求項２】
前記プロビジョニングリソースをセキュリティで保護された形で格納するように適合されたセキュアストレージモジュール
をさらに備えたことを特徴とする請求項１に記載のローカルプロビジョニングシステム。
【請求項３】
前記コンピューティングデバイスのユーザと対話するように適合されたユーザエクスペリエンスモジュール
をさらに備えたことを特徴とする請求項２に記載のローカルプロビジョニングシステム。
【請求項４】
前記プロビジョニングリソースはソフトウェアであることを特徴とする請求項３に記載のローカルプロビジョニングシステム。
【請求項５】
前記プロビジョニングリソースは前記コンピューティングデバイス用のオペレーティングシステムであることを特徴とする請求項４に記載のローカルプロビジョニングシステム。
【請求項６】
前記エンフォースメントモジュールは、前記コンピューティングデバイスのログインロジックシステム内で動作するように適合されていることを特徴とする請求項５に記載のローカルプロビジョニングシステム。
【請求項７】
前記計測モジュールは、
前記プロビジョニングリソースの使用をモニタリングする残余マネージャと、
プロビジョニングが行われたリソースの使用をモニタリングする、信頼できるクロックマネージャと
を含むことを特徴とする請求項６に記載のローカルプロビジョニングシステム。
【請求項８】
前記エンフォースメントモジュールは、ログオンイベントに応答して、前記残余マネージャをアクティブ化するようにさらに適合されていることを特徴とする請求項７に記載のローカルプロビジョニングシステム。
【請求項９】
前記ユーザエクスペリエンスモジュールは、
（１）前記ユーザから情報を受け取り、前記通信モジュールをアクティブ化するように適合されたアクティブ化モジュールと、
（２）前記プロビジョニングリソースの値を前記ユーザに通知するように適合された通知モジュールと
を含むことを特徴とする請求項８に記載のローカルプロビジョニングシステム。
【請求項１０】
前記通信マネージャは、
（１）プロビジョニングサービスから、前記プロビジョニングパケットを要求するように適合されたパケット要求マネージャと、
（２）前記プロビジョニングサービスから、ローカルプロビジョニングモジュールが、前記プロビジョニングパケットを復号化することを可能にする証明書を要求するように適合された証明書要求マネージャと、
（３）インターネットと通信するように適合されたウェブ通信マネージャと
を含むことを特徴とする請求項９に記載のローカルプロビジョニングシステム。
【請求項１１】
（１）前記アクティブ化モジュールは、前記ユーザから初期設定キーを受け取って、前記証明書要求マネージャをアクティブ化するようにさらに適合され、
（２）前記証明書要求マネージャは、
（Ａ）（ｉ）前記初期設定キーと、（ｉｉ）前記コンピューティングデバイスのハードウェアＩＤとを含む証明書要求を前記プロビジョニングサービスに送信し、
（Ｂ）前記プロビジョニングサービスから証明書を受信し、
（Ｃ）前記プロビジョニングサービスに証明書受信アクノレッジメントを送信するようにさらに適合されていることを特徴とする請求項１０に記載のローカルプロビジョニングシステム。
【請求項１２】
（１）前記購入通知モジュールは、
（ａ）前記コンピューティングデバイスの前記ユーザから支払い情報を受け取り、
（ｂ）前記支払い情報を受け取ったことに応答して、購入マネージャをアクティブ化するようにさらに適合され、
（２）前記購入マネージャは、
（ａ）前記支払い情報をビリングシステムに送信し、
（ｂ）前記ビリングシステムから支払い認定を受信し、
（ｃ）前記支払い認定を受信したことに応答して、前記パケット要求マネージャをアクティブ化するようにさらに適合され、
（３）前記パケット要求マネージャは、
（ａ）（ｉ）前記コンピューティングデバイスの前記ハードウェアＩＤと、（ｉｉ）前記初期設定キーと、（ｉｉｉ）前記証明書とを含むパケット要求を、前記プロビジョニングサービスに送信し、
（ｂ）前記プロビジョニングサービスから新たなプロビジョニングパケットを受信し、
（ｃ）前記プロビジョニングサービスにパケット受信アクノレッジメントを送信するようにさらに適合されていることを特徴とする請求項１１に記載のローカルプロビジョニングシステム。
【請求項１３】
前記トランザクションエンジンは、
（ａ）前記新たなプロビジョニングパケットを消費し、
（ｂ）前記プロビジョニングリソースの残余を更新するようにさらに適合されていることを特徴とする請求項１２に記載のローカルプロビジョニングシステム。
【請求項１４】
前記セキュアストレージマネージャは、（１）前記証明書と、（２）前記プロビジョニングリソースの残余と、（３）前記初期設定キーとの複数のコピーを、（ａ）セキュアハードウェアストレージと、（ｂ）セキュアファイルシステムと、（ｃ）セキュアローカルストレージ機関データベースとのうちの少なくとも１つに格納するようにさらに適合されていることを特徴とする請求項１３に記載のローカルプロビジョニングシステム。
【請求項１５】
前記エンフォースメントモジュールと、前記計測モジュールと、前記トランザクションエンジンとのうちの少なくとも１つは、ハードウェア上に実装されることを特徴とする請求項１３に記載のローカルプロビジョニングシステム。
【請求項１６】
前記ユーザエクスペリエンスモジュールは、前記プロビジョニングリソースの残余を、前記コンピューティングデバイスのディスプレイ上で、（１）タスクバーアイコンと、（２）コントロールパネルアプレットと、（３）バルーンポップアップとのうちの少なくとも１つとして表示するようにさらに適合されていることを特徴とする請求項１３に記載のローカルプロビジョニングシステム。
【請求項１７】
前記コンピューティングデバイスは、（１）コンピュータと、（２）携帯情報端末と、（３）携帯電話機と、（４）ゲームデバイスと、（５）エンターテイメントデバイスとのうちの少なくとも１つであることを特徴とする請求項１３に記載のローカルプロビジョニングシステム。
【請求項１８】
コンピューティングデバイスにおいてプロビジョニングが行われるサービスのプロビジョニングを行うためのシステムであって、
プロビジョニングシステムをホスティングするサーバと、
前記プロビジョニングシステムに前記コンピューティングデバイスを接続するように適合された通信デバイスと、
第１の期間にわたって、前記プロビジョニングが行われるサービスの使用を許可する情報を含むプロビジョニングパケットを、前記プロビジョニングシステムからダウンロードするように適合されたパケット要求マネージャと、
前記プロビジョニングパケットの内容を解析して、プロビジョニング残余値を算出するように適合された残余マネージャと、
前記プロビジョニング残余値が閾値を超えている場合、前記プロビジョニングが行われるサービスをアクティブ化するように適合されたエンフォースメントモジュールと
を備えたことを特徴とするシステム。
【請求項１９】
前記プロビジョニングパケットをセキュリティで保護された形で格納するように適合されたセキュアストレージモジュール
をさらに備えたことを特徴とする請求項１８に記載のシステム。
【請求項２０】
前記コンピューティングデバイスのユーザと対話するように適合されたユーザエクスペリエンスモジュール
をさらに備えたことを特徴とする請求項１８に記載のシステム。
【請求項２１】
前記プロビジョニングが行われるサービスはソフトウェアであることを特徴とする請求項１８に記載のシステム。
【請求項２２】
前記プロビジョニングが行われるサービスは前記コンピューティングデバイス用のオペレーティングシステムであることを特徴とする請求項１８に記載のシステム。
【請求項２３】
（ａ）プロビジョニングが行われるサービスのユーザをプロビジョニングシステムに接続することと、
（ｂ）第１の期間にわたって、前記プロビジョニングが行われるサービスの使用を許可する情報を含むプロビジョンパケットを、前記プロビジョニングシステムからダウンロードすることと、
（ｃ）前記プロビジョンパケットの内容を解析して、プロビジョニング値を算出することと、
（ｄ）前記プロビジョニング値が閾値を超えている場合、前記プロビジョニングが行われるサービスをアクティブ化することと、
（ｅ）前記プロビジョニング値が前記閾値を超えていない場合、前記プロビジョニングが行われるサービスを非アクティブ化することと
を備える方法を実行するためのコンピュータ実行可能な命令を有することを特徴とするコンピュータ読み取り可能な媒体。
【請求項２４】
（ａ）前記プロビジョニング値が前記閾値を超えていない場合、前記ユーザをビリングシステムに接続することと、
（ｂ）さらなる期間にわたって前記プロビジョニングが行われるサービスの使用を購入するための第１のグラフィカルユーザインターフェースを前記ユーザに提供することと
をさらに備える方法を実行するためのコンピュータ実行可能な命令を有することを特徴とする請求項２３に記載のコンピュータ読み取り可能な媒体。
【請求項２５】
前記プロビジョニングが行われるサービスは、前記ユーザのパーソナルコンピュータを動作させることを特徴とする請求項２３に記載のコンピュータ読み取り可能な媒体。
【請求項２６】
コンピュータサービスをユーザに販売するように適合されたビリングモジュールと、
前記ユーザによる前記プロビジョニングが行われるサービスの使用を許可するプロビジョニングパケットを生成するために、ビリング装置から要求を受信するように適合されたコアプロビジョニングモジュールと、
前記プロビジョニングパケットを求める要求を受信し、前記要求に応答して前記プロビジョニングパケットを送信するように適合されたパケット配信モジュールと、
パケット配信装置から前記プロビジョニングパケットを要求し、前記プロビジョニングパケットの値を算出し、前記プロビジョニングパケットの前記値に基づいて、前記ユーザが前記コンピュータサービスを使用することを許可するように適合されたローカルプロビジョニングモジュールと
を備えたコンピュータ実行可能なモジュール群を有することを特徴とする請求項２３に記載のコンピュータ読み取り可能な媒体。
【請求項２７】
コンピューティングデバイスにおいてプロビジョニングが行われるサービスのプロビジョニングを行う方法であって、
（ａ）前記コンピューティングデバイスをプロビジョニングシステムに接続することと、
（ｂ）第１の期間にわたって前記コンピューティングサービスの使用を許可する情報を含むプロビジョニングパケットを、前記プロビジョニングシステムからダウンロードすることと、
（ｃ）前記プロビジョニングパケットの内容を解析して、プロビジョニング残余値を算出することと、
（ｄ）前記プロビジョニング残余値が閾値を超えている場合、前記プロビジョニングが行われるサービスをアクティブ化することと
を備えることを特徴とする方法。
【請求項２８】
（ａ）前記プロビジョニングが行われるサービスの使用を反映するようにプロビジョニング残余を調整することと、
（ｂ）前記調整したプロビジョニング残余を評価することと、
（ｃ）前記調整したプロビジョニング値が前記閾値を下回っている場合、前記プロビジョニングが行われるサービスを非アクティブ化することと
をさらに備えることを特徴とする請求項２７に記載の方法。
【請求項２９】
（ａ）前記プロビジョニングが行われるサービスの使用を反映するようにプロビジョニング残余を調整することと、
（ｂ）前記調整したプロビジョニング残余を評価することと、
（ｃ）前記調整したプロビジョニング値が前記閾値を下回っている場合、
（１）前記プロビジョニングが行われるサービスのさらなる使用の購入を可能にする購入ツールを提供することと、
（２）前記プロビジョニングが行われるサービスのさらなる使用の支払いをユーザから受け取ることと、
（３）前記支払いを前記プロビジョニングサービスに伝送して、さらなるプロビジョニングパケットを取得することと、
（４）前記さらなるプロビジョニングパケットの内容を解析して、さらなるプロビジョニング残余値を算出することと、
（５）前記さらなるプロビジョニング残余を反映するように前記調整したプロビジョニング残余を増加させることと
をさらに備えることを特徴とする請求項２７に記載の方法。
【請求項３０】
前記プロビジョニングが行われるサービスは、パーソナルコンピュータ用のオペレーティングシステムであることを特徴とする請求項２７に記載の方法。
【請求項３１】
前記プロビジョニングが行われるサービスは、（１）パーソナルコンピュータと、（２）携帯情報端末と、（３）携帯電話機と、（４）ゲームデバイスと、（５）エンターテイメントデバイスとのうちの１つによって使用されるためのソフトウェアであることを特徴とする請求項２７に記載の方法。
【請求項３２】
前記プロビジョニングパケットは、最初のデバイスを識別する情報を含むことを特徴とする請求項２７に記載の方法。
【請求項３３】
前記プロビジョニングパケットは、前記コンピューティングデバイス以外のデバイスによっては復号化することができない第１のキーを使用して符号化されることを特徴とする請求項２７に記載の方法。
【請求項３４】
前記プロビジョニングパケットは、第１の証明書を有するデバイスだけが前記プロビジョニングパケットを復号化することができるように、符号化されることを特徴とする請求項２７に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本願は、一般にコンピュータに関し、より詳細には、コンピュータオペレーティングシステムに関する。
【背景技術】
【０００２】
世界人口の多くのパーセンテージの人々は、コンピュータ、および／または、コンピュータの効率的な使用を可能にする様々なソフトウェアを所有するだけの余裕がない。発展途上国の人々に、手ごろな価格でコンピューティングを入手させる必要性が存在する。また、以上のことは、ソフトウェアライセンスが一般に恒久的なライセンスに基づいて販売される、ソフトウェア業界の従来の構造に鑑みても当てはまる。様々なソフトウェアの恒久的なライセンスを購入するだけの十分な資金を有さないことの結果、人々は、トレーニング目的など、短期間でさえ、そのようなソフトウェアを使用することも妨げられる。さらに、先進国においてさえ、コンピュータユーザが、限られた期間にわたって特定のソフトウェアを使用する必要がある場合、そのユーザは、その特定のソフトウェアの恒久的なライセンスを購入する必要性によって、使用する気が削がれる。
【０００３】
これは、コンピュータ用のオペレーティングシステムの場合において、特に当てはまる。技術的に進んだコンピュータの計算能力と、インターネットを介して利用可能なリソースとを使用するには、高性能のオペレーティングシステムを使用して、コンピュータを動作させ、インターネットとその他のリソースとのコンピュータの通信を機能させることが必要である。しかし、ソフトウェアの場合にそうであるように、オペレーティングシステムもまた、一般に、恒久的なライセンスで販売され、そのような恒久的なライセンスの費用は、様々な第三世界諸国における人々の購買力と比べて、通常、法外に高い。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
恒久的なライセンスの購入を必要とすることなく、ソフトウェアの使用を可能にするための代替の解決策を提供する様々なビジネスモデルが試みられてきた。例えば、ユーザが、インターネットなどのネットワーク上のサーバにログインすることによって、そのサーバに存在するソフトウェアにアクセスすることができるアプリケーションサービスプロバイダ（ＡＳＰ）モデルに基づいて、様々な企業がソフトウェアを提供している。しかし、この方法は、ユーザがインターネットを介してそのサーバに継続的に接続していることを必要とする。これは、インターネットへのアクセスが、信頼できないものであり、費用がかかるものである様々な発展途上国において、実行可能な解決策ではない。代替として、ソフトウェアプロバイダは一般に、ユーザが、試用の目的で、ある一定の期間にわたってソフトウェアをダウンロードすることを許可し、その期間が過ぎると、ユーザは、ソフトウェアの恒久的なライセンスを購入しなければならないことが多い。しかし、そのような試用ソフトウェアを使用するための期間は、通常、固定されており、ユーザは、ユーザ自身が選択した期間を購入する、またはさらなる一定の期間にわたって試用ソフトウェアのユーザを更新する選択肢を有していない。ユーザが多種多様な方法でサービスを購入することができるように、ユーザにソフトウェアサービスを提供する必要性が存在することが容易に理解できよう。
【課題を解決するための手段】
【０００５】
ダイナミックソフトウェアアクティブ化システム（dynamic software activation system）により、所望のビジネスプロセスに基づいて、オペレーティングシステムのアクティブ化および非アクティブ化が可能となる。ダイナミックソフトウェアアクティブ化システムは、ユーザが、オペレーティングシステムプロビジョニング（provisioning）サービスまたはサードパーティから、特定の期間にわたって、特定の使用量に関して、または他の任意の所望の方法で、オペレーティングシステムの使用を要求することを可能にする。プロビジョニングサービスは、ユーザまたはサードパーティからの要求を処理して、オペレーティングシステムの使用のプロビジョニングを行い、その要求に応じて、その要求により指定された特定のデバイスに対するオペレーティングシステムの使用のプロビジョニングを行う。ダイナミックソフトウェアアクティブ化システムはまた、オペレーティングシステムを使用するデバイス上に配置されたローカルプロビジョニングモジュールも含む。このローカルプロビジョニングモジュールは、プロビジョニングサービスから受信した命令に基づいて、オペレーティングシステムのアクティブ化および非アクティブ化を行う。
【０００６】
代替の実施例では、ダイナミックソフトウェアアクティブ化システムは、ユーザが、プリペイドカードを購入することにより、オペレーティングシステムの使用を購入することを可能にする。プリペイドカードを使用して、ユーザは、自身が、指定された期間にわたってオペレーティングシステムを使用することを可能にするプロビジョニングパケット（provisioning packet）をダウンロードすることができる。さらに別の実施例では、ダイナミックソフトウェアシステムは、引受業者（underwriter）が、オペレーティングアクティブ化システム（operating activation system）を有するコンピュータと、オペレーティングシステムを使用するための指定された期間とを販売することを可能にする。
【０００７】
さらに別の代替の実施例では、ダイナミックソフトウェアアクティブ化システムは、ユーザが、ソフトウェアプロビジョニングシステムに対するコンピューティングデバイスの接続を使用し、ソフトウェアプロビジョニングシステムから、第１の期間にわたってコンピューティングサービスの使用を許可する情報を含むソフトウェアプロビジョニングパケットをダウンロードすることを可能にし、ソフトウェアプロビジョニングパケットの内容を解析して、プロビジョニング残余値（provisioning balance value）を算出し、プロビジョニング残余値が閾値を超えている場合、プロビジョニングが行われるソフトウェアをアクティブ化することを可能にする。
【０００８】
コンピューティングデバイス上でサービスのプロビジョニングを行うためのダイナミックソフトウェアアクティブ化システムの代替の実施例は、コンピューティングデバイス上である動作状態を強制する（enforce）ように適合されたエンフォースメントモジュール（enforcement module）と、（１）サービスの使用、および（２）サービスの使用を許可するプロビジョニングリソースの残余をモニタリングするように適合された計測モジュールと、プロビジョニングリソースを消費するように適合されたトランザクションエンジンと、プロビジョニングリソースを提供するプロビジョニングパケットを受信するように適合された通信モジュールとを備える。
【０００９】
ダイナミックソフトウェアアクティブ化システムのさらに別の実施例は、プロビジョニングが行われるサービスのユーザをプロビジョニングシステムに接続することと、プロビジョニングシステムから、第１の期間にわたって、プロビジョニングが行われるサービスの使用を許可する情報を含むプロビジョニングパケットをダウンロードすることと、プロビジョニングパケットの内容を解析して、プロビジョニング値を算出することと、プロビジョニング値が閾値を超えている場合、プロビジョニングが行われるサービスをアクティブ化することと、プロビジョニング値が閾値を超えていない場合、プロビジョニングが行われるサービスを非アクティブ化することとを備える方法を実行するためのコンピュータ実行可能な命令を有するコンピュータ読み取り可能な媒体を提供する。
【発明を実施するための最良の形態】
【００１０】
以下のテキストは、複数の様々な実施形態の詳細について説明しているが、本説明の法的範囲は、特許請求の範囲の記載によって定義されることを理解されたい。この詳細な説明は、単に例示的なものとして解釈されるべきであり、可能なすべての実施形態について記述しているものではない。なぜならば、可能なすべての実施形態について記述することは、不可能ではないとしても、非現実的であるからである。既存の技術または本願の出願日後に開発された技術を用いることによって、多数の代替実施形態を具現化できるであろう。それらの代替実施形態もまた、本発明を定義する特許請求の範囲に属するものである。
【００１１】
ある用語が、“本明細書で使用される用語「＿＿＿＿」は、「．．．．」を意味するものとして、本明細書では定義される”という文、または同様の文を用いて、本願において明示的に定義されない限り、その用語は、明示的なものを意味するものでも暗示的なものを意味するものでもなく、その用語の平明な意味、または通常の意味を越えたものであり、その用語の意味を限定する意図はないことも理解されたい。また、そのような用語は、（特許請求の範囲の言葉以外の、）本明細書の任意のセクションに記載された任意の文に基づいて、範囲が限定されるものと解釈すべきではない。本願では、読者を混乱させないよう簡潔にする目的で記載された単一の意味と矛盾しない限りにおいて、特許請求の範囲に記載されたすべての用語は広がりを有するものである。このような特許請求の範囲に記載された用語は、暗示によっても、そうでなくとも、その単一の意味に限定されるべきものと意図するものではない。最後に、請求項に記載の構成要素が、「意味する」という用語、および全く構造の記載のない機能を記載することによって定義されない限り、請求項におけるいずれの構成要素の範囲も、３５ＵＳＣ第１１２条第６項の適用に基づいて解釈されるべきものと意図するものではない。
【００１２】
（ネットワーク）  
図１は、ダイナミックソフトウェアプロビジョニングシステムを実装するのに使用することができるネットワーク１０を示している。ネットワーク１０は、インターネット、仮想プライベートネットワーク（ＶＰＮ）、あるいは、１つまたは複数のコンピュータ、通信デバイス、データベースなどが、互いに通信接続することを可能にする他の任意のネットワークとすることができる。ネットワーク１０は、イーサネット（登録商標）１６とルータ１８と有線通信線２０とを介して、パーソナルコンピュータ１２およびコンピュータターミナル１４に接続することができる。他方、ネットワーク１０は、無線通信局２６と無線リンク２８とを介して、無線により、ラップトップコンピュータ２２および携帯情報端末２４に接続することができる。同様に、サーバ３０は、通信リンク３２を使用してネットワーク１０に接続することができ、メインフレーム３４は、別の通信リンク３６を使用してネットワーク１０に接続することができる。以下でさらに詳細に説明するように、ダイナミックソフトウェアプロビジョニングシステムにおける１つまたは複数のコンポーネントは、ネットワーク１０に接続された様々なデバイスの任意のデバイスに格納することができ、様々なデバイスの任意のデバイス上で動作することができる。
【００１３】
（コンピュータ）  
図２は、ネットワーク１０に接続することができ、かつ、ダイナミックソフトウェアプロビジョニングシステムにおける１つまたは複数のコンポーネントを実装するのに使用することができるコンピュータ１１０の形態をとるコンピューティングデバイスを示している。コンピュータ１１０のコンポーネントには、処理ユニット１２０と、システムメモリ１３０と、システムメモリなどの様々なシステムコンポーネントを処理ユニット１２０に接続するシステムバス１２１とを含めることができるが、これらに限定されるものではない。システムバス１２１は、様々なバスアーキテクチャのいずれかを用いた、メモリバスまたはメモリコントローラ、周辺バス、ローカルバスなど、いくつかのタイプのバス構造のいずれかとすることができる。例えば、このようなアーキテクチャには、ＩＳＡ（Industry Standard Architecture）バス、ＭＣＡ（Micro Channel Architecture）バス、ＥＩＳＡ（Enhanced ISA）バス、ＶＥＳＡ（Video Electronics Standards Association）ローカルバス、および、メザニンバスとしても知られているＰＣＩ（Peripheral Component Interconnect）バスが含まれるが、これらに限定されるものではない。
【００１４】
コンピュータ１１０は通常、様々なコンピュータ読み取り可能な媒体を備える。コンピュータ読み取り可能な媒体は、コンピュータ１１０がアクセスできる任意の利用可能な媒体とすることができ、コンピュータ読み取り可能な媒体には、揮発性媒体および不揮発性媒体、取り外し可能な媒体および取り外し不可能な媒体の両方が含まれる。例えば、コンピュータ読み取り可能な媒体には、コンピュータ記憶媒体および通信媒体を含めることができるが、これらに限定されるものではない。コンピュータ記憶媒体には、コンピュータ読み取り可能な命令、データ構造、プログラムモジュール、またはその他のデータなどの情報を記憶するための任意の方法または技術を用いて実装された、揮発性媒体および不揮発性媒体、取り外し可能な媒体および取り外し不可能な媒体が含まれる。コンピュータ記憶媒体には、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ、もしくはその他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）、もしくはその他の光ディスクストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ、もしくはその他の磁気記憶デバイスが含まれ、または、所望の情報を記憶するのに使用できコンピュータ１１０がアクセスできるその他の任意の媒体が含まれるが、これらに限定されるものではない。通信媒体は通常、コンピュータ読み取り可能な命令、データ構造、プログラムモジュール、またはその他のデータを、搬送波やその他の搬送機構などの被変調データ信号に組み入れるものであり、通信媒体には、任意の情報伝達媒体が含まれる。「被変調データ信号」という用語は、信号内の情報が符号化される形で１つまたは複数の特性が設定または変更される信号を意味する。例えば、通信媒体には、有線ネットワークや直接配線接続などの有線媒体と、音響、ＲＦ、赤外線、およびその他の無線媒体などの無線媒体とが含まれる。これらの任意の組合せも、コンピュータ読み取り可能な媒体の範囲に含まれるべきである。
【００１５】
システムメモリ１３０には、読み取り専用メモリ（ＲＯＭ）１３１やランダムアクセスメモリ（ＲＡＭ）１３２など、揮発性メモリおよび／または不揮発性メモリの形態をとるコンピュータ記憶媒体が含まれる。ＲＯＭ１３１には通常、起動中などにコンピュータ１１０内の要素間で情報を転送するのを助ける基本ルーチンを含むＢＩＯＳ（Basic Input/Output System）１３３が記憶されている。ＲＡＭ１３２には通常、処理ユニット１２０がすぐにアクセスすることができ、かつ／または、処理ユニット１２０が現在処理している、データおよび／またはプログラムモジュールが含まれる。例えば、図２には、オペレーティングシステム１３４、アプリケーションプログラム１３５、その他のプログラムモジュール１３６、およびプログラムデータ１３７が示されているが、これらに限定されるものではない。
【００１６】
コンピュータ１１０は、その他の取り外し可能／取り外し不可能な揮発性／不揮発性コンピュータ記憶媒体を備えることもできる。一例として、図２には、取り外し不可能な不揮発性磁気媒体に対して読み書きするハードディスクドライブ１４１と、取り外し可能な不揮発性磁気ディスク１５２に対して読み書きする磁気ディスクドライブ１５１と、ＣＤ  ＲＯＭやその他の光媒体などの取り外し可能な不揮発性光ディスク１５６に対して読み書きする光ディスクドライブ１５５が示されている。この例示的な動作環境において使用できるその他の取り外し可能／取り外し不可能な揮発性／不揮発性コンピュータ記憶媒体には、磁気テープカセット、フラッシュメモリカード、デジタル多用途ディスク、デジタルビデオテープ、ソリッドステートＲＡＭ、ソリッドステートＲＯＭなどが含まれるが、これらに限定されるものではない。ハードディスクドライブ１４１は通常、インターフェース１４０などの取り外し不可能なメモリインターフェースを介してシステムバス１２１に接続され、磁気ディスクドライブ１５１および光ディスクドライブ１５５は通常、インターフェース１５０などの取り外し可能なメモリインターフェースを介してシステムバス１２１に接続される。
【００１７】
図２に示して上述したドライブ群、およびそれらに関連するコンピュータ記憶媒体は、コンピュータ読み取り可能な命令、データ構造、プログラムモジュール、およびその他のデータの記憶領域をコンピュータ１１０に提供する。例えば図２には、ハードディスクドライブ１４１が、オペレーティングシステム１４４、アプリケーションプログラム１４５、その他のプログラムモジュール１４６、およびプログラムデータ１４７を記憶しているものとして示されている。これらのコンポーネントは、オペレーティングシステム１３４、アプリケーションプログラム１３５、その他のプログラムモジュール１３６、およびプログラムデータ１３７と同一とすることもできるし、または、異なるものとすることもできることに留意されたい。図２では、オペレーティングシステム１４４、アプリケーションプログラム１４５、その他のプログラムモジュール１４６、およびプログラムデータ１４７が少なくとも異なるコピーであることを示すために、それらには異なる番号を付している。ユーザは、キーボード１６２、および、通常マウス、トラックボール、タッチパッドなどを指すポインティングデバイス１６１などの入力デバイスを介して、コンピュータ１１０にコマンドおよび情報を入力することができる。その他の入力デバイス（図示せず）には、マイクロホン、ジョイスティック、ゲームパッド、衛星受信アンテナ、スキャナなどを含めることができる。これらおよびその他の入力デバイスは、システムバスに接続されたユーザ入力インターフェース１６０を介して、処理ユニット１２０に接続されることが多いが、パラレルポート、ゲームポート、ユニバーサルシリアルバス（ＵＳＢ）など、その他のインターフェースおよびバス構造を介して接続されてもよい。モニタ１９１または他のタイプのディスプレイデバイスも、ビデオインターフェース１９０などのインターフェースを介して、システムバス１２１に接続される。コンピュータは、モニタに加えて、スピーカ１９７やプリンタ１９６など、その他の周辺出力デバイスも備えることができ、これらは、出力周辺インターフェース１９５を介して接続することができる。
【００１８】
コンピュータ１１０は、リモートコンピュータ１８０などの１つまたは複数のリモートコンピュータへの論理接続を用いて、ネットワーク環境において動作することができる。リモートコンピュータ１８０は、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピアデバイス、またはその他の一般的なネットワークノードとすることができ、図２には、メモリ記憶デバイス１８１しか示されていないが、通常は、コンピュータ１１０に関して上述した要素の多くまたはすべてを備える。図２に示す論理接続には、ローカルエリアネットワーク（ＬＡＮ）１７１およびワイドエリアネットワーク（ＷＡＮ）１７３が含まれるが、その他のネットワークも含めることができる。このようなネットワーキング環境は、オフィス、企業全体のコンピュータネットワーク、イントラネット、およびインターネットにおいては一般的である。
【００１９】
ＬＡＮネットワーキング環境において使用される場合、コンピュータ１１０は、ネットワークインターフェースまたはネットワークアダプタ１７０を介してＬＡＮ１７１に接続される。ＷＡＮネットワーキング環境において使用される場合、コンピュータ１１０は通常、インターネットなどのＷＡＮ１７３を介した通信を確立するためのモデム１７２またはその他の手段を備える。モデム１７２は、内蔵型でも外付け型でもよく、ユーザ入力インターフェース１６０、またはその他の適切な機構を介して、システムバス１２１に接続することができる。ネットワーク環境では、コンピュータ１１０と関連させて示したプログラムモジュールまたはその一部を、リモートメモリ記憶デバイスに記憶することができる。例えば、図２には、リモートアプリケーションプログラム１８５がメモリデバイス１８１に存在するものとして示されているが、これに限定されるものではない。図示したネットワーク接続は、例示的なものであり、コンピュータ間で通信リンクを確立するための他の手段も使用できることを理解されたい。
【００２０】
（ソフトウェアプロビジョニングシステム）  
図３は、コンピューティングデバイス２０２上でオペレーティングシステムの使用のプロビジョニングを行うダイナミックソフトウェアプロビジョニングシステム２００を示している。コンピューティングデバイス２０２は、デスクトップコンピュータ１２、ラップトップコンピュータ２２、ＰＤＡ２４、携帯電話機、または任意の同様のデバイスなどの、一般的に周知のコンピューティングデバイスのいずれであってもよい。ソフトウェアプロビジョニングシステム２００は、オペレーティングシステムの使用のプロビジョニングを行うよう実装されるように示されているが、代替の実施例では、ソフトウェアプロビジョニングシステム２００は、ソフトウェア、ファームウェア、コンピューティングデバイスの機能（feature）など、その他のリソースの使用のプロビジョニングを行うのに使用されてもよい。同様に、ソフトウェアプロビジョニングシステム２００は、ネットワーク１０に通信接続されたコンピューティングデバイス２０２におけるリソースの使用のプロビジョニングを行うように示されているが、ソフトウェアプロビジョニングシステム２００は、ネットワーク１０に接続されない可能性があるコンピューティングデバイスにおいて、そのような使用を実施するように使用されてもよいし、または、ネットワーク１０に一時的に接続されてもよい。
【００２１】
ソフトウェアプロビジョニングシステム２００は、コアプロビジョニングサービスモジュール２０６と、配信サービスモジュール（distribution service module）２０８と、証明書サービスモジュール２１０と、コアデータベース２１２と、配信データベース２１４とを含むプロビジョニングサービスモジュール２０４を備えることができる。プロビジョニングシステム２０４は、ビリングアダプタ（billing adapter）２１８を介して、ビリングシステム２１６と通信することができるのに対して、コアプロビジョニングサービスモジュール２０６は、データベースライタ（database writer）２２０を介して、配信データベース２１４と通信することができ、配信データベース２１４は、データベースリーダ（database reader）２２２を介して、配信サービス２０８と通信する。コンピューティングデバイス２０２は、配信ウェブサービスモジュール２２６を介して配信サービスモジュール２０８と通信し、かつビリングウェブサービスモジュール２２８を介してビリングシステム２１６と通信する、ローカルプロビジョニングモジュール（ＬＰＭ：Local Provisioning Module）２２４を備えることができる。
【００２２】
プロビジョニングサービスモジュール２０４は、サーバ３０などのサーバシステム上に、またはネットワーク１０に通信接続された、他のシステム上に配置することができる。同様に、ビリングシステム２１６も、サーバ３０などのサーバシステム上に、またはネットワーク１０に通信接続された、他のシステム上に配置することができる。さらに、プロビジョニングサービスモジュール２０４における様々なコンポーネントのうちの１つまたは複数が、同一のサーバ上に配置されてもよいし、異なる場所に配置された、いくつかの異なるサーバ上に配置されてもよい。例えば、コアデータベース２１２は、異なる場所に配置され、かつネットワーク１０にそれぞれ通信接続された、いくつかの異なるデータベースサーバ上に配置することができる。プロビジョニングサービスモジュール２０４の機能、およびプロビジョニングサービスモジュール２０４の様々なコンポーネントモジュールの機能を、以下でさらに詳細に説明する。
【００２３】
図３では、コンピューティングデバイス２０２は、ウェブサービスモジュール２２６および２２８を介して、配信サービスモジュール２０８およびビリングシステム２１６とそれぞれ通信するように示されているのに対して、代替実施形態では、コンピューティングデバイス２０２のユーザは、電話機などの、代替の通信モードを介して、配信サービスモジュール２０８およびビリングシステム２１６と通信することができる。例えば、コンピューティングデバイス２０２がネットワーク１０に接続できない状況において、コンピューティングデバイス２０２のユーザは、電話機と、配信サービスモジュール２０８に接続された音声認識対応のユーザインターフェースとを介して、または配信サービスモジュール２０８と通信することができるカスタマサービス担当者などを介して、通信することができる。
【００２４】
コンピューティングデバイス２０２が、コンピュータ１１０などのコンピュータである場合、ＬＰＭ２２４は、システムメモリ１３０の一部として、処理ユニット１２０などのコンピュータ１１０の様々なハードウェアコンポーネントの一部として、または、上記の任意の組合せとして、取り外し不可能な不揮発性メモリ１４０上に配置することができる。ＬＰＭ２２４の機能については、以下でさらに詳細に説明する。
【００２５】
（プロビジョニングシステムのフローチャート）  
次に、図４を参照すると、プロビジョニングプログラム２５０が、ソフトウェアプロビジョニングシステム２００の全体的な機能を示している。ブロック２５１で、ユーザに、コンピューティングデバイス２０２上でオペレーティングシステムを使用するための登録キーが与えられる。ユーザがオペレーティングシステムなどを使用するためのさらなる時間を購入した結果、コンピューティングデバイス２０２の新たな購入とともに、登録キーをユーザに与えることができる。いくつかの異なるエンティティが、ユーザに登録キーを与えることができる。例えば、コンピューティングデバイス２０２を販売するコンピュータ販売店が、ユーザに登録キーを与えることもできるし、コンピューティングデバイス２０２に関するオペレーティングシステムの使用を含むサービスのバンドルを販売するインターネットサービスプロバイダが、ユーザに登録キーを与えることもできる。
【００２６】
以下でさらに詳細に説明するように、登録キーは、証明書サービス２１０を使用することにより、プロビジョニングサービスモジュール２０４によって生成され、登録キーのプロバイダに、セキュリティで保護された形で送信することができる。代替として、登録キーのプロバイダが、プロビジョニングサービスモジュール２０４に沿う方法で、登録キーを生成してもよい。登録キーは、その登録キーを使用するコンピューティングデバイス２０２を識別する、ハードウェアまたはその他のコンポーネントに固有の情報を含んでもよいし、含まなくてもよい。ソフトウェアプロビジョニングシステム２００の１つの実施例では、各登録キーは、コンピューティングデバイス２０２のハードウェアＩＤ（ＨＷＩＤ）によって、コンピューティングデバイス２０２を一意に識別する。さらに別の実施例では、登録キーは、オペレーティングシステムプロダクトキーなどの、製品ＩＤ番号とすることができ、オペレーティングシステムの開発者、オペレーティングシステムを使用するコンピューティングデバイスの製造業者などの、プロビジョニングサービス以外のエンティティによって生成されてもよい。初期設定キー（ＩｎｉｔＫｅｙ）とも呼ばれる登録キーは、一連の英数字の形態、ＲＦＩＤ（Radio Frequency IDentification）タグの形態、または他の任意の合意されたフォーマットとすることができる。
【００２７】
登録キーをユーザに与えた後、ブロック２５２で、プロビジョニングプログラム２５０は、登録キーをプロビジョニングサービスモジュール２０４に登録することが必要であるか否かを判定する。ＩｎｉｔＫｅｙが、プロビジョニングサービスモジュール２０４によって最初に生成された場合は、ＩｎｉｔＫｅｙを登録する必要がないこともある。というのは、ＩｎｉｔＫｅｙは、プロビジョニングサービスモジュール２０４において、データベース内に既に格納されている可能性があるからである。代替として、サードパーティベンダが、合意された手続きに基づいてＩｎｉｔＫｅｙを生成することを許可されるように、ソフトウェアプロビジョニングシステム２００がセットアップされる場合、そのようなベンダは、ＩｎｉｔＫｅｙの生成時に、または少なくともＩｎｉｔＫｅｙをユーザに与えた時点で、ＩｎｉｔＫｅｙを登録する必要がある可能性がある。
【００２８】
ＩｎｉｔＫｅｙを登録する必要があると判定された場合、ブロック２５４で、ベンダは、プロビジョニングサービスモジュール２０４にＩｎｉｔＫｅｙを登録することができる。ＩｎｉｔＫｅｙの登録については、図９を参照して、以下でさらに詳細に示す。
【００２９】
ＩｎｉｔＫｅｙの登録の後、ブロック２５６で、プロビジョニングプログラム２５０は、コンピューティングデバイス２０２に対するプロビジョニングパケット（「パケット」とも呼ばれる）を生成する。コンピューティングデバイス２０２がプロビジョニングパケットを使用することによって、ユーザが、指定された時間にわたって、指定された期間にわたって、または他の任意の合意された形でオペレーティングシステムを使用できるようにする。代替の実施例では、プロビジョニングパケットを使用することによって、ユーザが、指定された期間にわたって、ソフトウェア、アプリケーションなどの、他の任意のリソースを使用できるようにする。プロビジョニングサービスモジュール２０４によって生成されたプロビジョニングパケットには、そのパケットのユーザ、そのパケットによって許可される使用量などに関する情報を含めることができる。例えば、ベンダが、コンピューティングデバイス２０２におけるオペレーティングシステムの１ヶ月分の前払いの使用を伴うコンピューティングデバイス２０２を販売すると、ブロック２５６で、プロビジョニングサービスモジュール２０４は、コンピューティングデバイス２０２が１ヶ月にわたってオペレーティングシステムを使用することを可能にする、コンピューティングデバイス２０２に対するプロビジョニングパケットを生成することができる。しかし、プロビジョニングパケットは、コンピューティングデバイス２０２だけが、その特定のプロビジョニングパケットを使用できるようにするように生成されてもよい。プロビジョニングパケットの生成については、図１０を参照して、以下でさらに詳細に示す。
【００３０】
ユーザが、コンピューティングデバイス２０２を起動することにより、または他の任意の方法で、コンピューティングデバイス２０２におけるオペレーティングシステムをアクティブ化しようと試みると、ＬＰＭ２２４は、オペレーティングシステムのアクティブ化を制御することができる。これは、プログラム２５０のブロック２５８によって表されている。ユーザがオペレーティングシステムを使用しようと試みることが最初であることを、ＬＰＭ２２４が検出した場合、ＬＰＭ２２４は、ＩｎｉｔＫｅｙを入力するようユーザに要求することができる。代替の実施例では、ＬＰＭ２２４は、コンピューティングデバイス２０２をスキャンして、コンピューティングデバイス２０２にＩｎｉｔＫｅｙが事前に投入されている（pre-populated）か否かを判定することができる。ＩｎｉｔＫｅｙが事前に投入されている場合、ＬＰＭ２２４は、コンピューティングデバイス２０２からＩｎｉｔＫｅｙを自動的に取り出すことができる。ユーザからＩｎｉｔＫｅｙを受け取った後、ＬＰＭ２２４は、プロビジョニングサービスモジュール２０４に接続して、コンピューティングデバイス２０２に関する証明書を要求することができる。この証明書を求める要求には、他にも情報がある中で、とりわけ、ＩｎｉｔＫｅｙ、およびコンピューティングデバイス２０２のＨＷＩＤが含まれる。ＬＰＭ２２４の設計および動作については、図７を参照して、以下でさらに詳細に説明する。
【００３１】
証明書を求める要求に応答して、ブロック２６０で、プロビジョニングサービスモジュール２０４は、証明書サービスモジュール２１０から証明書を受信し、配信サービスモジュール２０８を介して、その証明書をコンピューティングデバイス２０２に送信することができる。証明書サービスモジュール２１０から証明書を生成し、その証明書をクライアントデバイスに送信するプロセスについては、図１０を参照して、以下でさらに詳細に説明する。
【００３２】
プロビジョニングサービスモジュール２０４から証明書を受信すると、ブロック２６２で、ＬＰＭ２２４は、コンピューティングデバイス２０２においてオペレーティングシステムを使用するために、さらなるプロビジョニングパケットを取得する必要があるか否かを判定することができる。ＬＰＭ２２４は、コンピューティングデバイス２０２が使用されていた時間、現在の期間などのビジネスルール、または任意の同様のビジネスルールに基づいて、プロビジョニングサービスモジュール２０４から受信したプロビジョニングパケットを消費することができる。以下でさらに説明するように、ＬＰＭ２２４は、プロビジョニングサービスモジュール２０４から以前に受信したプロビジョニングパケットを格納するローカルプロビジョニングパケットストレージモジュールを有することができる。ＬＰＭ２２４は、そのようなローカルパケットストアから、あるプロビジョニングパケットを選択し、そのパケットの内容を解析して、プロビジョニングサービスモジュール２０４からさらなるパケットを要求する必要があるか否かを判定することができる。プロビジョニングパケットの選択、および選択されたプロビジョニングパケットの解析については、図７を参照して、以下でさらに詳細に説明する。
【００３３】
さらなるプロビジョニングパケットを要求することが必要であると判定された場合、ブロック２６４で、ＬＰＭ２２４は、プロビジョニングサービスモジュール２０４に要求を送信して、さらなるプロビジョニングパケットを受信することができる。ＬＰＭ２２４は、いくつかの異なる方法により、そのような要求をプロビジョニングサービスモジュール２０４に送信することができる。それらの方法としては、配信サービスモジュール２０８のウェブサービスモジュール２２６に接続すること、プロビジョニングサービスモジュール２０４におけるカスタマサービス担当者と連絡をとるよう、コンピューティングデバイス２０２のユーザに要求すること、または他の任意の所望される方法が挙げられる。プロビジョニングパケットを求める要求には、クライアントデバイスや、クライアントデバイスによって使用されるオペレーティングシステムなどを識別する情報を含めることができる。
【００３４】
コンピューティングデバイス２０２から、プロビジョニングパケットを求める要求を受信すると、ブロック２６６で、プロビジョニングサービスモジュール２０４は、プロビジョニングパケットを生成し、ＬＰＭ２２４にそのプロビジョニングパケットを配信することができる。ＬＰＭ２２４に提供される各プロビジョニングパケットには、コンピューティングデバイス２０２、コンピューティングデバイス２０２によって使用されるオペレーティングシステム、パケットタイプ、パケットシーケンス番号、コンピューティングデバイス２０２がオペレーティングシステムを使用することを許可される時間、またはオペレーティングシステムの使用が期限切れになる日付などを識別する様々な情報を含めることができる。ＬＰＭ２２４がプロビジョニングパケット内の情報を認証することを可能にするデジタル署名も、プロビジョニングパケット内に含めることができる。代替として、異なるセキュリティプロトコルの下では、ＬＰＭ２２４がプロビジョニングパケット内の情報を認証することを可能にするデジタル署名は、別々にＬＰＭ２２４に送信することもできる。プロビジョニングパケットの生成および配信については、図１２を参照して、以下でさらに詳細に説明する。
【００３５】
プロビジョニングパケットを受信すると、ブロック２６８で、ＬＰＭ２２４は、プロビジョニングパケットを処理することができる。この処理については、図７を参照して、以下でさらに詳細に説明する。プロビジョニングパケットの内容を解析した後、コンピューティングデバイス２０２におけるオペレーティングシステムの使用を可能にすることがＬＰＭ２２４に許可されているとＬＰＭ２２４が判定した場合、ブロック２７０で、コンピューティングデバイス２０２は、コンピューティングデバイス２０２におけるオペレーティングシステムを起動することができる。
【００３６】
（コアプロビジョニングシステム）  
図５は、図３のコアプロビジョニングサービスモジュール２０６の詳細なブロック図を示している。コアプロビジョニングサービスモジュール２０６は、ネットワーク１０に通信接続されたサーバ３０上、メインフレーム３４上、または他の任意の適切なデバイス上に実装することができる。コアプロビジョニングサービスモジュール２０６は、証明書サービスモジュール２１０、ビリングアダプタ２１８、コアＤＢ２１２、および配信サービスモジュール２０８と通信することができる。コアプロビジョニングサービス２０６には、ビリングアダプタと通信するビリングインターフェース２０８と、証明書サービスモジュール２１０と通信する証明書サービスインターフェース２８２と、配信サービスモジュール２０８と通信する配信サービスインターフェース２８８と、アカウント更新モジュール２８４と、パケットジェネレータ２８６と、コアデータベース２１２および配信データベース２１４と通信するデータアクセスモジュール２９０とを含めることができる。
【００３７】
ビリングインターフェース２８０は、ウェブインターフェースや、ビリングアダプタ２１８に対するＶＰＮを使用して、または当業者には周知である他の任意の所望される方法により、実装することができる。特定の実施例では、ビリングインターフェース２８０は、Ｍｉｃｒｏｓｏｆｔ社のメッセージキュー（message queue）（ＭＳＭＱ；商標）インターフェースを使用して実装することができる。代替として、エンタープライズアプリケーションインターフェース（ＥＡＩ：Enterprise Application Interface）プロトコルを使用して設計されたＭｉｃｒｏｓｏｆｔ（登録商標）  Ｂｉｚｔａｌｋ（商標）などの、異なる業界プロトコルを使用して設計されたインターフェースも、ビリングインターフェース２８０を実装するのに使用することができる。また、ＭＳＭＱ（商標）テクノロジを使用して、配信サービスインターフェース２８８およびデータアクセスモジュール２９０を実装することもできる。
【００３８】
ビリングインターフェースモジュール２８０は、コンピューティングデバイスに対するＩｎｉｔＫｅｙの登録を求める要求をビリングアダプタ２１８から受信することができる。また、ビリングインターフェースモジュール２８０は、アカウント更新と通信して、アカウント更新情報を提供したり、様々なコンピューティングデバイスをブートストラップしたり、証明書サービスモジュール２１０からコンピューティングデバイスに関するクライアント証明書を要求したりする。
【００３９】
アカウント更新モジュール２８４は、コンピューティングデバイス２０２に関するアカウントの作成、保持、および更新を担うことができる。アカウント更新モジュール２８４は、コンピューティングデバイス２０２に関するアカウントのセットアップおよび更新に関して、ビリングアダプタ２１８から情報を受信することができ、パケットジェネレータ２８６と通信して、コンピューティングデバイス２０２に対するプロビジョニングパケットを生成させ、そのプロビジョニングパケットを格納させることができる。例えば、引受業者、電気通信会社が、コンピューティングデバイス２０２におけるオペレーティングシステムに関する使用時間のブロックを販売し、ビリングアダプタ２１８を使用して、アカウント更新要求をコアプロビジョニングサービス２０６に送信し、それに応じて、コンピューティングデバイス２０２のアカウントを更新することができる。ビリングアダプタ２１８からアカウント更新要求を受信すると、アカウント更新モジュール２８４は、データアクセスモジュール２９０を使用して、コアデータベース２１２に対して必要なエントリを行い、パケットジェネレータ２８６と通信して、必要なプロビジョニングパケットを生成することができる。代替のケースでは、配信サービスモジュール２０８が、コンピューティングデバイス２０２から要求を受信して、コンピューティングデバイス２０２に関するプロビジョニングパケットを購入することができる。
【００４０】
それに対し、コンピューティングデバイス２０２が、証明書またはプロビジョニングパケットを求める要求をコアプロビジョニングサービス２０６に送信すると、アカウント更新モジュール２８４は、コアデータベース２１２からプロビジョニングパケットを取り出し、コンピューティングデバイス２０２に関するアカウント情報を更新し、配信サービスモジュール２０８と通信して、プロビジョニングパケットをコンピューティングデバイス２０２に送信することができる。
【００４１】
コアプロビジョニングサービス２０６は、証明書またはプロビジョニングパケットを求める要求をコンピューティングデバイス２０２から受信すると、証明書サービスインターフェース２８２を使用することにより証明書サービスモジュール２１０と通信して、証明書を受信する、または証明書を検証することができる。証明書サービスモジュール２１０は、暗号化された証明書の生成および管理を可能にする標準の証明書技術のいずれかを使用して、実装することができる。例えば、証明書サービスモジュール２１０は、公開キー基盤（ＰＫＩ）に準拠する証明書機関を使用して、実装することができる。証明書サービスモジュール２１０には、暗号化された非対称の一対のキーの生成や、キー利用者の識別および認証などを担うキーマネージャ２９２を含めることができる。また、証明書サービスモジュール２１０には、デジタル証明書によって公開キーをクライアントアカウントにバインドするための証明書ジェネレータ２９４も含めることができる。証明書ジェネレータ２９４は、そのような証明書の発行、保持、管理、取消、停止、回復、および更新のため、ならびに、公開キーリポジトリの作成および管理のために存在する。クライアント用の証明書の生成および管理については、図１１を参照して、以下でさらに詳細に説明する。
【００４２】
証明書サービスインターフェース２８２は、パケットジェネレータ２８６によって生成されたプロビジョニングパケットが、コンピューティングデバイス２０２に送信される前に、証明書サービスモジュール２１０によって生成された証明書を使用することにより、そのプロビジョニングパケットに署名することができる。また、証明書サービスインターフェース２８２は、パケット要求におけるクライアント署名を検証するなどのために、証明書サービスモジュール２１０と通信することもできる。
【００４３】
コアプロビジョニングサービス２０６は、プロビジョニングパケットと、クライアントデバイス証明書などの、他のクライアントデバイスのブートストラップ情報とを配信データベース２１４内に発行すること（publishing）を担うことができる。配信サービスモジュール２０８は、配信データベース２１４からの情報の読み取りについては許可される場合があるが、アカウント情報の整合性を保つために、一般に、配信データベース２１４内に情報を発行することについては、許可されないことに留意されたい。
【００４４】
コアプロビジョニングサービス２０６内の様々なモジュールは、前述した様々なタスクを実行する別々のモジュールとして示されているが、この図は、単に例示のためであり、実際には、それらの様々なモジュールのすべてが、それらのモジュールの１つまたは複数が組み合わされるように異なる形で実装されてもよいことや、それらのモジュールのすべてが、異なる形で互いに対話してもよいことなどを理解されたい。
【００４５】
（コアデータベーススキーマ）  
図６は、コアデータベース２１２を実装するのに使用することができるコアデータベーススキーマ３１０を示している。コアデータベーススキーマ３１０には、ブートストラップテーブル３１２と、コンピューティングデバイステーブル３１４と、ジョブテーブル３１６と、パケットテーブル３１８と、構成テーブル３２０と、コンピューティングデバイスログテーブル３２２と、タイプテーブル３２４と、ジョブログテーブル３２６と、ステータステーブル３２８とを含めることができる。コアデータベーススキーマ３１０は、周知のリレーショナルデータベースソフトウェアのいずれかを使用して実装することができ、コアデータベーススキーマ３１０の様々なテーブルは、単一のデータベースサーバ上、またはネットワーク１０などのネットワークを介して互いに接続された別々のデータベースサーバ上に格納することができる。
【００４６】
ブートストラップテーブル３１２は、ソフトウェアプロビジョニングシステム２００を使用してプロビジョニングを行うことができる、コンピューティングデバイス２０２などのコンピューティングデバイス用のブートストラップデータを格納することができる。ただし、そのようなデータは、ビリングアダプタ２１８を介して、引受業者から受信される。ブートストラップテーブル３１２内の各レコードには、レコードＩＤフィールド、コンピューティングデバイスのＩＤ、コンピューティングデバイスのユーザに与えられたＩｎｉｔＫｅｙ、パケットがコンピューティングデバイスに配信された回数を識別する配信カウント、およびコンピューティングデバイスのブートストラップステータスを含む情報を含めることができる。
【００４７】
コンピューティングデバイステーブル３１４は、ソフトウェアプロビジョニングシステム２００を使用してプロビジョニングを行うことができる、コンピューティングデバイス２０２などのコンピューティングデバイスと関連するデータを格納することができる。コンピューティングデバイステーブル３１４は、コンピューティングデバイスに送信される登録パケットまたはプロビジョニングパケットに追加される、コンピューティングデバイスと関連する様々なデータを格納することができる。コンピューティングデバイステーブル３１４を使用して、コンピューティングデバイスを識別し、コンピューティングデバイスのステータスを追跡することができる。コンピューティングデバイステーブル３１４内の各レコードには、レコードＩＤフィールド、コンピューティングデバイスのハードウェア構成を指定するハードウェアＩＤ、コンピューティングデバイスに送信された、前のプロビジョニングパケットのシーケンス番号を表す最終シーケンス番号などを含む情報を含めることができる。
【００４８】
ジョブテーブル３１６は、プロビジョニングサービスモジュール２０４に対する様々なプロビジョニング要求に基づいて作成することができるデータを格納し、各プロビジョニング要求は、ジョブテーブル３１６内に新たなレコードを作成する。ジョブテーブル３１６内のレコードを使用して、様々なプロビジョニング要求のプロビジョニングジョブステータスを追跡することができる。ジョブテーブル３１６内の各レコードには、レコードＩＤフィールド、コンピューティングデバイスＩＤ、ジョブタイプＩＤ、ジョブ追跡ＩＤ、プロビジョニング要求に関するトークン、プロビジョニング要求を行うコンピューティングデバイスのアカウントＩＤ、プロビジョニング要求の日時、プロビジョニング要求の処理のステータスなどを含む情報が含まれる。
【００４９】
パケットテーブル３１８は、ジョブデータに基づいて作成することができるパケットデータを格納し、１つのジョブは、１つまたは複数のパケットを作成することができる。パケットテーブルを使用して、配信サービスモジュール２０８またはビリングアダプタ２１８から受信したプロビジョニング要求に応答して生成された様々なプロビジョニングパケットの配信ステータスを追跡する。パケットテーブル内の各レコードには、レコードＩＤ、パケットを作成させるようにしたジョブを表すジョブＩＤ、パケット内に含まれる様々なデータ、ある特定のコンピューティングデバイスから前回のパケットダウンロードアクノレッジメント（acknowledgement）を受信した後に、その特定のコンピューティングデバイスに、何回パケットが配信されたかを表す配信カウント、およびパケットの処理の段階を表すステータスに関する情報を含めることができる。
【００５０】
構成テーブル３２０は、コアデータベース２１２を実装するのに使用されるサーバを記述する、サーバ構成データ（server configuration data）の名前−値ペア（name-value pair）のすべてを表すデータを格納することができる。構成テーブル３２０内の各レコードには、サーバのネームスペース、名前、およびサーバの名前−値ペアの設定に関する情報を含めることができる。
【００５１】
コンピューティングデバイスログテーブル３２２は、コンピューティングデバイスと関連するジョブ以外の、コンピューティングデバイスと関連する様々なアクティビティ（activity）のログを記録することができる。コンピューティングデバイスログテーブル３２２内の各レコードには、レコードＩＤ、コンピューティングデバイスＩＤ、コンピューティングデバイスのタイプ、コンピューティングデバイスを記述するデータ、およびコンピューティングデバイスがプロビジョニングサービスモジュール２０４に対してログインした時刻に関する情報を含めることができる。例えば、コンピューティングデバイスのタイプは、ブートストラップレコード作成済みタイプ（bootstrap record created type）、ブートストラップ進行中タイプ、ブートストラップ完了タイプ、ブートストラップオーバーリミットタイプ（コンピューティングデバイスからアクノレッジメントを受信することなく、指定された数を超える証明書がコンピューティングデバイスに配信されたことを表す）、証明書要求済みタイプ（certificate requested type）、パケット要求済みタイプ（packet requested type）などのいずれか１つとすることができる。
【００５２】
タイプテーブル３２４を使用して、ジョブテーブル３１６、コンピューティングデバイスログテーブル３２２、およびジョブログテーブル３２６によって使用される、列挙可能な（enumerable）様々なタイプを予め定義することができる。
【００５３】
ジョブログテーブル３２６を使用して、ジョブまたはパケットと関連する様々なアクティビティのログを記録することができる。ジョブログテーブル３２６内の各レコードには、レコードＩＤ、ジョブＩＤ、ジョブのタイプ、ジョブの記述、ジョブのログが記録された時刻などを含む情報を含めることができる。
【００５４】
ステータステーブル３２８を使用して、ブートストラップテーブル３１２、コンピューティングデバイステーブル３１４、ジョブテーブル３１６、およびパケットテーブル３１８内で使用される、列挙可能な様々なステータスを予め定義することができる。
【００５５】
（配信データベーススキーマ）  
図７は、配信データベース２１４を実装するために使用することができる配信データベーススキーマ３４０を示している。配信データベーススキーマ３４０には、配信ブートストラップテーブル３４２と、配信パケットテーブル３４４とを含めることができる。配信データベーススキーマ３４０は、周知のリレーショナルデータベースソフトウェアのいずれかを使用して実装することができ、配信データベーススキーマ３４０の様々なテーブルは、単一のデータベースサーバ上、またはネットワーク１０などのネットワークを介して互いに接続された別々のデータベースサーバ上に格納することができる。
【００５６】
配信ブートストラップテーブル３４２は、コンピューティングデバイスの登録中にコアプロビジョニングサービス２０６によって発行されるブートストラップデータを格納することができる。配信ブートストラップテーブル３４２の各レコードには、レコードＩＤ、特定のコンピューティングデバイスと関連するＩｎｉｔｋｅｙ、およびその特定のコンピューティングデバイスのハードウェアＩＤを含む情報を含めることができ、配信ブートストラップテーブル３４２内のレコードは、その特定のコンピューティングに関するブートストラップが完了した際に、コアプロビジョニングサービス２０６によって削除することができる。
【００５７】
配信パケットテーブル３４４は、コアプロビジョニングサービス２０６によって生成されたパケットを格納することができる。配信パケットテーブル３４４の各レコードは、特定のパケットに対応することが可能であり、配信パケットテーブル３４４の各レコードには、レコードＩＤ、その特定のパケットを使用するコンピューティングデバイスを記述するハードウェアＩＤ、その特定のパケットのパケットシーケンス番号、その特定のパケットの内容、アクノレッジメントを受信することなく、その特定のパケットがクライアントデバイスに送信された回数を示す配信カウント、配信サービスモジュール２０８が、その特定のパケットをクライアントデバイスに配信しようと試みることができる回数を示す最大配信カウントを含む情報が含まれる。ある特定のパケットが、クライアントコンピューティングデバイスによって正常にダウンロードされると、その特定のパケットと関連するレコードを、配信パケットテーブル３４４から削除することができる。また、ある特定のパケットに関する配信カウントが、最大配信カウントを超えた場合、その特定のパケットと関連するレコードも、配信パケットテーブル３４４から削除することができる。
【００５８】
（ローカルプロビジョニングモジュール）  
図８は、ＬＰＭ２２４のさらなる詳細なブロック図を示している。ＬＰＭ２２４は、コンピューティングデバイス２０２などのコンピューティングデバイス上に存在する、ソフトウェアプロビジョニングシステム２００のクライアント側コンポーネントである。ＬＰＭ２２４は、ソフトウェアプロビジョニングシステム２００によってプロビジョニングが行われたサービスを使用して、コンピューティングデバイスのユーザと対話すること、ネットワーク１０を介して配信サービスモジュール２０８と対話することなどを含め、様々な機能を実行することができる。
【００５９】
ＬＰＭ２２４は、クライアントコンピューティングデバイス２０２によって使用される特定のログインプログラムと対話することにより、クライアントコンピューティングデバイス２０２において特定の状態になるよう強制する機能を実行することができる。クライアントデバイスが、ログインロジックとしてＷＰＡ（Windows（登録商標） Product Activation）システムを使用している特定の実施例では、ＬＰＭ２２４は、ＷＰＡと対話して、クライアントコンピューティングデバイス２０２において特定の状態になるよう強制することができる。しかし、代替の実施例では、ＬＰＭ２２４は、他の任意の適切なオペレーティングシステムログインプログラムと対話することができる。ＬＰＭ２２４の実施例は、ソフトウェアで実装され、かつＷＰＡによって使用されるログインプログラムにリンクされるライブラリとして構成された、様々な論理コンポーネントのグループとして図８に示されている。しかし、ＬＰＭ２２４の代替の実施例では、ＬＰＭ２２４の様々な論理コンポーネントのうちの１つまたは複数は、ハードウェアで実装することができる。
【００６０】
具体的には、ＬＰＭ２２４には、コンピューティングデバイス２０２に、特定の状態で動作するようにさせるエンフォースメントアドオンモジュール３５２と、ソフトウェアプロビジョニングシステム２００によってプロビジョニングが行われるリソースの使用量を計測する計測モジュール３５４と、コアプロビジョニングサービス２０６によって提供されるプロビジョニングパケットを使用してトランザクションを行うトランザクションエンジン３５６と、プロビジョニングパケットに対してセキュアストレージを提供するセキュアストレージマネージャ３５８と、コアプロビジョニングサービス２０６と通信する通信モジュール３６０と、ユーザと対話するユーザエクスペリエンスモジュール（user experience module）３６２とを含めることができる。
【００６１】
エンフォースメントアドオンモジュール３５２は、コンピューティングデバイス２０２のログインロジック３６４に組み込むことができる。ユーザが、ログインロジック３６４を使用してコンピューティングデバイス２０２にログオンすると、ログインロジック３６４内のエンフォースメントアドオンモジュール３５２は、プロビジョニングパケットの残余情報に関して、計測モジュール３５４に問い合わせることができる。エンフォースメントアドオンモジュール３５２が、コンピューティングデバイス２０２が十分なプロビジョニングパケットを有すると判定した場合、ログインロジック３６４が、通常のルーチンで動作することを許可し、ユーザが、コンピューティングデバイス２０２にログオンすることを許可することができる。しかし、エンフォースメントアドオンモジュール３５２が、コンピューティングデバイス２０２が十分なプロビジョニングパケットを有さないと判定した場合、非アクティブ化された状態になるよう、コンピューティングデバイス２０２に強制する。そのような非アクティブ化された状態では、コンピューティングデバイス２０２をアクティブ化するのに必要なだけの制限されたユーザインターフェースが、コンピューティングデバイス２０２のユーザに提供される。
【００６２】
計測モジュール３５４には、プロビジョニングが行われたリソースの使用に利用可能な現在の残余を読み取って検証し、現在の残余を更新し、かつプロビジョニングパケットを処理するための残余マネージャ（balance manager）３６６を含めることができる。また、計測モジュール３５４には、構成マネージャ３６８、および常時増加タイマ（always increasing timer）を保持するための信頼できるクロックマネージャ３７０も含めることができる。信頼できるクロックマネージャ３７０は、信頼できるハードウェアクロック３７２を使用して、常時増加タイマを保持するタスクを実現することができる。残余マネージャ３６６および信頼できるクロックマネージャ３７０は、ＬＰＭ２２４の安全な動作にとって、非常に注意すべき重要なものであり、ＬＰＭ２２４の動作中、様々なセキュリティ攻撃を受ける可能性が高いので、このように配置されている。
【００６３】
エンフォースメントアドオンモジュール３５２および計測モジュール３５４は、協働して、コンピューティングデバイス２０２において、プロビジョニングが行われたリソースのアクティブ化および非アクティブ化を実施することができる。エンフォースメントアドオンモジュール３５２は、所定のイベント群に基づいて残余マネージャ３６６を呼び出す、ログインロジック３６４内のイベントディスパッチャとして機能することができるのに対して、残余マネージャ３６６は、イベントに応答して呼び出された際に、どのようなアクションを行うかを決定することができる。エンフォースメントアドオンモジュール３５２が、残余マネージャ３６６をアクティブ化させることが可能な様々なイベントの例として、次のものが挙げられる。（１）ログオンイベント、（２）システムロック解除イベント、（３）ハイバネーションからの回復イベント、（４）スタンバイからのウェークアップイベント、（５）ユーザによってトリガされたイベント、（６）ログオフイベント、（７）パケットダウンロード、（８）タイマの刻み（timer tick）、（１０）システムロックイベント、（１１）スクリーンセーバ開始イベント、（１２）スクリーンセーバ停止イベントなどである。残余マネージャ３６６は、そのイベントを入力として受け入れて、結果のアクションをエンフォースメントアドオンモジュール３５２に戻すことができる。
【００６４】
例えば、ユーザがログオンする際、エンフォースメントアドオンモジュール３５２は、ユーザログオンイベントを残余マネージャ３６６に送信することができる。ユーザログオンイベントに応答して、残余マネージャ３６６は、プロビジョニングが行われたリソースを使用するために利用可能な現在の残余を問い合わせることができ、残余が十分にある場合、残余マネージャ３６６は、ログオンアクションをエンフォースメントアドオンモジュール３５２に戻すことができる。しかし、残余が十分にない場合、エンフォースメントアドオンモジュール３５２は、ログインロジック３６４に、通知ユーザインターフェース（ＵＩ）３９８に戻すようにさせることができる。通知ＵＩは、ユーザがプロビジョニングサービスモジュール２０４からさらなるプロビジョニングパケットを購入することにより、残余を増やし、それにより、コンピューティングデバイス２０２をアクティブ化することを可能にする。
【００６５】
トランザクションエンジン３５６は、残余マネージャ３６６における残余およびパケット消費カウンタを更新するために、プロビジョニングパケットを処理することができる。トランザクションエンジン３５６は、いずれのプロビジョニングパケットも、１回だけ消費されて、残余が更新されるようにすることを確実にすることができる。トランザクションエンジン３５６が残余とパケット消費カウンタとを一緒に更新するように、トランザクションエンジン３５６を設計することができ、したがって、残余およびパケット消費カウンタの両方が更新されるか、または残余およびパケット消費カウンタのいずれも更新されない。代替として、残余データが、何らかの予期しないイベントによって破壊されないようにすることを確実にするために、トランザクションエンジン３５６を使用して、残余データの整合性を維持することもできる。トランザクションエンジン３５６の機能の例を以下に示す。
【００６６】
この例では、ユーザが、１０時間用の第１のカードおよび２０時間用の第２のカードという２つのプリペイドカードを使用して、プロビジョニングが行われるリソースの使用時間を購入するものと想定されたい。プロビジョニングサービスモジュール２０４は、合計残余を保持していないので、一方は１０時間用であり、他方は２０時間用である、２つの別々のライセンス情報のセットが、プロビジョニングサービスモジュール２０４において作成される。ユーザが、プロビジョニングサービスモジュール２０４と対話して、コンピューティングデバイス２０２にプロビジョニングパケットをダウンロードすると、コンピューティングデバイス２０２にダウンロードされたプロビジョニングパケットの各々は、固有のプロビジョニングパケット番号を有する。トランザクションエンジン３５６が第１のパケットを処理すると、トランザクションエンジン３５６は、パケット消費カウンタを増加させ、かつ残余を１０時間分増加させ、その後、トランザクションエンジン３５６が第２のパケットを処理すると、トランザクションエンジン３５６は、パケット消費カウンタを再び増加させ、かつ残余をさらに２０時間分増加させる。
【００６７】
セキュアストレージマネージャ３５８は、ＬＰＭ２２４が、セキュリティで保護された形で残余データを格納できるようにし、それによって、ユーザが残余データを改ざんできないようにし、ＬＰＭ２２４だけが残余データにアクセスできるようにする。プロビジョニングパケットは、ＬＰＭ２２４によってダウンロードされた後、セキュアストレージマネージャ３５８に格納することができる。同様に、残余カウンタおよびパケット消費カウンタもまた、セキュアストレージマネージャ３５８に格納することができる。図示した実施例では、セキュアストレージマネージャ３５８は、ユーザエクスペリエンスモジュール３６２がセキュアストレージマネージャ３５８にアクセスできるように、ダイナミックリンクライブラリ（ｄｌｌ）として実装されている。
【００６８】
セキュアストレージマネージャ３５８に格納されたデータがセキュリティで保護されていることを確実にするために、データ暗号化キーを使用して、データをセキュアストレージマネージャ３５８に格納することができ、データ暗号化キーを有するモジュールだけが、セキュアストレージマネージャ３５８からデータを読み取ることができる。セキュアストレージマネージャ３５８は、ＬＳＡデータベース３７６にアクセスするために、ローカルセキュリティ機関（ＬＳＡ：Local Security Authority）サブシステム３７４と通信し、セキュアハードウェアストレージ３８０にアクセスするために、ストレージドライバ３７８と通信し、コンピューティングデバイス２０２におけるファイル３８４にアクセスするために、ファイルシステムドライバ３８２と通信することができる。さらなるセキュリティのため、セキュアストレージマネージャ３５８の代替の実施例では、セキュアストレージマネージャ３５８に格納されたデータの複数のコピーを使用し、各コピーが相互参照されて、そのデータのいずれのコピーにも改ざんが存在しないことを確実にすることもできる。本明細書で説明したＬＰＭ２２４の実施例では、ソフトウェアで実装されたセキュアストレージマネージャ３５８を有するが、代替のＬＰＭ２２４の実施例では、セキュアストレージマネージャ３５８が、ハードウェアで実装されてもよい。
【００６９】
通信モジュール３６０には、プロビジョニングサービスモジュール２０４からプロビジョニングパケットおよび／または証明書を要求するパケット／証明書要求マネージャ３８６と、ビリングシステム２１６および／またはプロビジョニングサービスモジュール２０４から、さらなるプロビジョニングパケットを購入する購入マネージャ３８８と、ＬＰＭ２２４がネットワーク１０と通信することを可能にするウェブサービス通信マネージャ３９０とを含めることができる。
【００７０】
パケット／証明書要求マネージャ３８６は、パケットまたは証明書をプロビジョニングサービスモジュール２０４から要求する要求を、ユーザエクスペリエンスモジュール３６２から受信することができる。例えば、ユーザが、ＵＩにＩｎｉｔＫｅｙを入力することにより、クライアントデバイスに最初にログオンする際、ユーザエクスペリエンスモジュール３６２は、そのＩｎｉｔＫｅｙをパケット／証明書要求マネージャ３８６に転送することができ、パケット／証明書要求マネージャ３８６は、プロビジョニングサービスモジュール２０４と通信して、プロビジョニングサービスモジュール２０４から証明書を受信することができる。また、パケット／証明書要求マネージャ３８６は、証明書またはプロビジョニングパケットが正常にダウンロードされると、プロビジョニングサービスモジュール２０４に確認応答を行うことも担うことができる。パケット／証明書要求マネージャ３８６は、プロビジョニングプロトコルを使用して、プロビジョニングサービスモジュール２０４と通信することができる。パケット／証明書要求マネージャ３８６によってダウンロードされたパケットは、セキュアストレージマネージャ３５８に格納することができる。
【００７１】
購入マネージャ３８８は、ユーザから支払い情報を受け取り、その支払い情報をビリングシステム２１６またはプロビジョニングサービスモジュール２０４に通信することにより、コンピューティングデバイス２０２のユーザが、さらなるプロビジョニングパケットを購入することを可能にすることができる。パケット／証明書要求マネージャ３８６および購入マネージャ３８８は双方とも、ウェブサービス通信マネージャ３９０を使用して、ネットワーク１０と通信することができる。ウェブサービス通信マネージャは、ネットワークサービスマネージャ３９２およびネットワークインタフェースカード（ＮＩＣ）３９４を使用して、ネットワーク１０と通信することができる。この実施例では、ウェブサービス通信マネージャ３９０を使用して、ネットワーク１０と通信するが、代替の実施例では、ファイル転送プロトコル（ＦＴＰ）ドライバなどの、他の通信ツールを使用して、ネットワーク１０と通信してもよいことに留意されたい。
【００７２】
ユーザエクスペリエンスモジュール３６２には、パケット／証明書要求マネージャ３６８が、プロビジョニングサービスモジュール２０４から証明書をダウンロードすることを可能にするＩｎｉｔＫｅｙを入力するよう、ユーザに求めるアクティブ化ユーザインターフェース（ＵＩ）３９６と、ＬＰＭ２２４が、ユーザと対話することを可能にする通知ＵＩ３９８とを含めることができる。例えば、ユーザが、プロビジョニングが行われるリソースを使用するためのプリペイドカードを購入した際、アクティブ化ＵＩ３９６は、プリペイドカードによって提供される番号を入力するようユーザに求め、パケット／証明書要求マネージャ３８６を呼び出して、プリペイドカード番号に対応する最新のプロビジョニングパケットをダウンロードすることができる。また、アクティブ化ＵＩ３９６は、購入マネージャ３８８を呼び出して、ユーザが、さらなるプロビジョニングパケットを購入することを可能にすることもできる。そして、購入が完了すると、その購入に対応するプロビジョニングパケットをダウンロードするよう、パケット／証明書要求マネージャ３８６を自動的に呼び出すように、アクティブ化ＵＩを設計することができる。
【００７３】
通知ＵＩ３９８には、ユーザが、現在の残余情報、使用履歴などを問い合わせることを可能にする様々なユーザインターフェースを含めることができる。通知ＵＩ３９８は、ユーザまたはログインロジック３６４によって呼び出すことができる。プロビジョニングが行われるリソースを使用するために利用可能な残余が少ない状況では、ログインロジック３６４は、通知ＵＩ３９８を呼び出して、さらなる購入が必要であることをユーザに通知することができる。通知ＵＩは、常にアクティブであってもよく、タスクバーアイコン、コントロールパネルアプレット、バルーンポップアップを介して、またはその他の任意の一般に知られているＵＩ手法を使用することにより、ユーザに通知サービスを提供することができる。
【００７４】
ソフトウェアプロビジョニングシステム２００の様々なコンポーネントについて説明したが、以下では、図９〜図１２を参照して、ソフトウェアプロビジョニングシステム２００の動作をさらに詳細に説明する。
【００７５】
（ＩｎｉｔＫｅｙの登録）  
図９は、ＩｎｉｔＫｅｙをコアプロビジョニングサービス２０６に登録するために使用することができる登録プログラム４３０のフローチャートを示している。ブロック４３２で、ＩｎｉｔＫｅｙのプロバイダが、ＩｎｉｔＫｅｙ登録要求をコアプロビジョニングサービス２０６に送信する。前述したように、プロバイダは、コンピューティングデバイス２０２のベンダ、コンピューティングデバイス２０２のオペレーティングシステムを使用するベンダ、ソフトウェアプロビジョニングシステム２００のカスタマサービス担当者（ＣＳＲ：Customer Service Representative）などのサードパーティによって管理することが可能なビリングシステム２１６とすることができる。
【００７６】
ＩｎｉｔＫｅｙ登録要求は、コアプロビジョニングサービス２０６のメッセージキュー内で受信することができる。Ｉｎｉｔｋｅｙ登録要求がメッセージキュー内で認識されると、ブロック４３４で、コアプロビジョニングサービス２０６は、登録プロセスを開始することができる。
【００７７】
ブロック４３６で、ＩｎｉｔＫｅｙは、コアデータベース２１２のブートストラップテーブル３１２に追加することができ、登録プログラム４３０は、ブートストラップステータスを「作成済み」に設定することができる。
【００７８】
次いで、ブロック４３８で、コアプロビジョニングサービス２０６は、コンピューティングデバイスログテーブル３２２内に、「ブートストラップ作成済み」というメッセージのログを記録することができる。
【００７９】
最後に、ブロック４４０で、コアプロビジョニングサービス２０６は、「ブートストラップ発行」というメッセージを、配信データベース２１４のメッセージキューに送信することができる。
【００８０】
（パケットの生成）  
図１０は、コンピューティングデバイス２０２のＬＰＭ２２４によって使用されるプロビジョニングパケットを生成するために使用することができるパケット生成プログラム４５０のフローチャートを示している。
【００８１】
ブロック４５２で、ビリングアダプタ２１８は、プロビジョニングパケットを求めるプロビジョニング要求メッセージを、コアプロビジョニングサービス２０６に送信することができる。コアプロビジョニングサービス２０６は、いくつかの引受業者と接続することができるので、そのようなプロビジョニング要求メッセージは、ビリングアダプタ２１８をコアプロビジョニングサービス２０６に接続するＭＳＭＱインターフェースにおいてキューに入れられる。
【００８２】
ビリングアダプタ２１８からプロビジョニング要求メッセージを取り出すと、ブロック４５４で、コアプロビジョニングサービス２０６は、パケット生成トランザクションを開始することができる。
【００８３】
ブロック４５６で、コアプロビジョニングサービス２０６は、プロビジョニング要求メッセージからのハードウェアＩＤを使用して、新たなコンピューティングデバイスレコードをコンピューティングデバイステーブル３１４に追加することができる。しかし、ハードウェアＩＤを含むレコードが、コンピューティングデバイステーブル３１４内に既に存在する場合、新たなコンピューティングデバイスレコードを追加する必要がない場合もある。
【００８４】
次いで、ブロック４５８で、コアプロビジョニングサービス２０６は、新たなジョブレコードをジョブテーブル３１６に追加して、プロビジョニングパケットを求める新たなジョブ要求を記録することができる。コアプロビジョニングサービス２０６は、新たに追加されたジョブレコードのステータスを、「作成済み」に設定することができる。ブロック４６０で、コアプロビジョニングサービス２０６は、プロビジョニング要求メッセージの日時とともに、新たなレコードをジョブログテーブル３２６内に追加することができる。
【００８５】
ブロック４６２で、コアプロビジョニングサービス２０６は、プロビジョニング要求メッセージに基づいてプロビジョニングパケットを生成することができる。パケット生成には、プロビジョニング要求メッセージ内に提供された証明書を検証すること、使用時間量をプロビジョニングパケットに追加することなどを含めることができる。
【００８６】
ブロック４６４で、コアプロビジョニングサービス２０６は、キーマネージャ２９２と通信して、セキュアキーを用いてプロビジョニングパケットに署名し、ＸＭＬベースのプロビジョニングパケットを生成することができる。
【００８７】
プロビジョニングパケットの生成後、ブロック４６６で、コアプロビジョニングサービス２０６は、コンピューティングデバイステーブル３１４内の最終シーケンス番号を１だけ増加させることができる。
【００８８】
ブロック４６８で、コアプロビジョニングサービス２０６は、新たに生成されたプロビジョニングパケットをパケットテーブル３１８に挿入し、パケットテーブル３１８内のプロビジョニングパケットのステータスを「パケット生成済み」に設定することができる。
【００８９】
次いで、ブロック３７０で、コアプロビジョニングサービス２０６は、ジョブログテーブル３２６内に、「パケット生成済み」というメッセージのログを記録することができる。最後に、ブロック３７２で、コアプロビジョニングサービス２０６は、配信データベースライタ２２０に対するメッセージキューに、「パケット発行」というメッセージを送信して、パケットを配信データベース２１４内に追加することができる。
【００９０】
（ブートストラップ）  
図１１は、証明書サービスモジュール２１０から証明書を要求し、その証明書をコンピューティングデバイス２０２に送信するために使用することができるブートストラッププログラム５００のフローチャートを示している。
【００９１】
ブロック５０２で、配信サービスモジュール２０８は、コンピューティングデバイス２０２などのコンピューティングデバイスから証明書要求を受信することができる。証明書要求は、パケット／証明書要求マネージャ３８６によって生成することができ、証明書要求には、コンピューティングデバイス２０２のハードウェアＩＤ、ＩｎｉｔＫｅｙなどを含む情報を含めることができる。
【００９２】
ブロック５０４で、コアプロビジョニングサービス２０６は、ブートストラップテーブル３１２内でＩｎｉｔＫｅｙを検索することができる。ブロック５０６で、コアプロビジョニングサービス２０６は、コンピューティングデバイステーブル３１４が、証明書要求内に提供されたハードウェアＩＤを含むか否かを確認することができる。コンピューティングデバイステーブル３１４内にレコードが存在しない場合、コアプロビジョニングサービス２０６は、レコードをコンピューティングデバイステーブル３１４内に追加することができる。
【００９３】
ブロック５０８で、コアプロビジョニングサービス２０６は、コンピューティングデバイスログテーブル３２２内に、「コンピューティングデバイス作成済み」というメッセージのログを記録することができる。次いで、ブロック５１０で、コアプロビジョニングサービス２０６は、証明書要求トランザクションの処理を開始することができる。
【００９４】
ブロック５１２で、コアプロビジョニングサービス２０６は、ブートストラップテーブル３１２を調べて、配信カウントが、構成テーブル３２０によって指定された最大配信カウントより大きいか否かを確認し、配信カウントが最大配信カウントより大きい場合、コアプロビジョニングサービス２０６は、制御をブロック５２４に移すことができる。
【００９５】
配信カウントが最大配信カウントより大きくない場合、ブロック５１４で、コアプロビジョニングサービス２０６は、ブートストラップテーブル３１２内のブートストラップステータスを調べることができる。ブートストラップステータスが、「作成済み」または「進行中」ではない場合、制御をブロック５２４に移すことができる。
【００９６】
それに対し、ブートストラップステータスが、「作成済み」または「進行中」のいずれかである場合、ブロック５１６で、コアプロビジョニングサービス２０６は、ブートストラップテーブル３１２内のブートストラップステータスを「進行中」に更新することができる。
【００９７】
次いで、ブロック５１８で、コアプロビジョニングサービス２０６は、コンピューティングデバイスログテーブル３２２内に、「ブートストラップ進行中」というメッセージのログを記録することができる。
【００９８】
ブロック５２０で、コアプロビジョニングサービス２０６は、証明書ユーティリティを呼び出して、新たなクライアント証明書を生成することができる。証明書ユーティリティから新たな証明書を受信した後、ブロック５２２で、コアプロビジョニングサービス２０６は、配信サービスモジュール２０８のメッセージキューにクライアント証明書を送信することができ、制御をブロック５３０に移すことができる。
【００９９】
ブロック５２４で、コアプロビジョニングサービス２０６は、ブートストラップテーブル内の配信カウントが最大配信カウントより大きいため、ブートストラップテーブル３１２内のブートストラップステータスを「オーバーリミット」に更新することができる。「オーバーリミット」というステータスは、コアプロビジョニングサービス２０６が、コンピューティングデバイス２０２用の証明書を発行したことに応答して、ＬＰＭ２２４から適切なアクノレッジメントを受信していないことを意味する。したがって、ブロック５２６で、コアプロビジョニングサービス２０６は、コンピューティングデバイスログテーブル３２２内に、証明書を要求するコンピューティングデバイスからアクノレッジメントが受信されていないことを表す、「ブートストラップオーバーリミット」というメッセージのログを記録することができる。
【０１００】
ブロック５２８で、コアプロビジョニングサービス２０６は、「ブートストラップ削除」というメッセージを、配信データベースライタ２２０のメッセージキューに送信して、配信データベース２１４からブートストラップレコードを削除することができる。
【０１０１】
証明書をクライアントに送信した後に、ブロック５２２からブロック５３０に制御を移すことができる。したがって、ブロック５３０は証明書要求の処理の終わりを表す。
【０１０２】
証明書要求を処理した後、ブロック５３２で、コアプロビジョニングサービス２０６は、配信サービスモジュール２０８のメッセージキュー内で、証明書ダウンロード完了メッセージを受信することができる。そのような証明書ダウンロード完了メッセージは、証明書の正常なダウンロードの後、ＬＰＭ２２４のパケット／証明書要求マネージャ３８６によって送信することができる。
【０１０３】
証明書ダウンロード完了メッセージを受信した後、ブロック５３４で、コアプロビジョニングサービス２０６は、ブートストラップ完了トランザクションを開始することができる。ブロック５３６で、コアプロビジョニングサービス２０６は、ブートストラップテーブル３１２内のブートストラップステータスを「完了」に更新することができる。次いで、ブロック５３８で、コアプロビジョニングサービス２０６は、コンピューティングデバイスログテーブル３２２内に、証明書要求を送信するコンピューティングデバイスに関するブートストラッププロセスが完了したことを表す、「ブートストラップ完了」というメッセージのログを記録することができる。
【０１０４】
最後に、ブロック５４０で、コアプロビジョニングサービス２０６は、「ブートストラップ削除」というメッセージを、配信データベースライタ２２０に対するメッセージキューに送信して、配信データベース２１４のブートストラップテーブル３４２からブートストラップレコードを削除することができる。
【０１０５】
（パケット配信）  
図１２は、コアプロビジョニングサービス２０６から、コンピューティングデバイス２０２などの様々なコンピューティングデバイスにプロビジョニングパケットを配信するために使用することができるパケット配信プログラム５５０のフローチャートを示している。パケット配信プログラム５５０は、パケット／証明書要求マネージャ３８６によって、コンピューティングデバイスのユーザを助けるカスタマサービス担当者によって、またはその他の同様の方法によって開始することができる。
【０１０６】
ブロック５５２で、コアプロビジョニングサービス２０６は、配信サービスモジュール２０８のメッセージキューにおいて、パケットダウンロードメッセージを受信することができる。そのようなメッセージは、例えば、コンピューティングデバイス２０２のパケット／証明書要求マネージャ３８６によって送信することができる。パケットダウンロードメッセージを受信すると、ブロック５５４で、コアプロビジョニングサービス２０６は、パケット要求トランザクションを開始することができる。
【０１０７】
パケット要求トランザクションの始めに、ブロック５５６で、コアプロビジョニングサービス２０６は、パケットテーブル３１８内のステータスが、パケットダウンロードメッセージを送信するコンピューティングデバイスが、コアプロビジョニングサービス２０６によるパケットの前の伝送に対する確認応答を行っていないことを示す「パケットオーバーリミット」であるか否かを判定することができ、制御はブロック５６４に移される。
【０１０８】
コアプロビジョニングサービス２０６は、パケットテーブル３１８内のステータスが「パケットオーバーリミット」ではないと判定した場合、ブロック５５８で、パケットテーブル３１８内のステータスを「配信進行中」に更新することができる。
【０１０９】
次いで、ブロック５６０で、コアプロビジョニングサービス２０６は、パケットテーブル３１８内の配信カウントを、パケットダウンロードメッセージ内で指定された値に更新することができる。例えば、パケットダウンロードメッセージが、コアプロビジョニングサービス２０６から２つのパケットを要求した場合、パケットテーブル３１８内の配信カウントは、２だけ増加される。ブロック５６２で、コアプロビジョニングサービス２０６は、ジョブログテーブル３２６内に、「パケット配信進行中」というメッセージのログを記録することができる。
【０１１０】
コンピューティングデバイスからのアクノレッジメントが無いと、制御がブロック５６４に移される。したがって、ブロック５６４で、コアプロビジョニングサービス２０６は、パケットテーブル３１８内のステータスを「オーバーリミット」に更新することができる。
【０１１１】
ブロック５６６で、コアプロビジョニングサービス２０６は、パケットテーブル３１８内の配信カウントを、パケットダウンロードメッセージ内で指定された値に更新することができ、ブロック５６８で、コアプロビジョニングサービス２０６は、ジョブテーブル３１６のステータスを「エラー」に更新する。最後に、ブロック５７０で、コアプロビジョニングサービス２０６は、ジョブログテーブル３２６内に、「パケットオーバーリミット」というメッセージのログを記録することができる。
【０１１２】
ブロック５７２で、コアプロビジョニングサービス２０６は、パケット要求トランザクションの処理を終え、パケットを要求するコンピューティングデバイスからのアクノレッジメントを待つことができる。ブロック５７４で、コアプロビジョニングサービス２０６は、配信サービスモジュール２０８のメッセージキューにおいて、パケットダウンロード完了メッセージを受信することができる。パケットダウンロード完了メッセージは、要求されたパケットが正常にダウンロードされると、パケット／証明書要求マネージャ３８６によって送信することができる。
【０１１３】
パケットダウンロード完了メッセージを受信すると、ブロック５７６で、コアプロビジョニングサービス２０６は、パケットダウンロード完了トランザクションを開始することができる。パケットダウンロード完了トランザクションの一環として、ブロック５７８で、コアプロビジョニングサービス２０６は、パケットテーブル３１８内のステータスを「完了」に更新することができ、ブロック５８０で、ジョブテーブル内のステータスも「完了」に更新することができる。
【０１１４】
さらに、ブロック５８０で、コアプロビジョニングサービス２０６は、ジョブログテーブル３２６内に、「ジョブ完了」というメッセージのログを記録し、ブロック５８２で、パケットダウンロード完了トランザクションを終えることができる。
【０１１５】
ソフトウェアプロビジョニングシステム２００の様々なコンポーネントの動作を説明したが、以下では、図１３〜図１６を参照して、様々な条件下のユーザエクスペリエンスを説明する様々な例示的なシナリオを示す。
【０１１６】
（シナリオ１−ログイン中の残余検証）  
図１３は、ＬＰＭ２２４の動作中の第１のシナリオを表すフローチャート６００を示している。具体的には、フローチャート６００は、ユーザがコンピュータにログオンするシナリオを表している。図１３に示されるように、ブロック６０２で、ユーザがコンピューティングデバイス２０２にログオンしようと試みると、エンフォースメントアドオンモジュール３５２は、ログオンイベントを残余マネージャ３６６に送信することができる。ログオンイベントに応答して、ブロック６０４で、残余マネージャ３６６は、コンピューティングデバイス２０２のオペレーティングシステムを使用するために利用可能な残余を検証することができる。残余が十分にある場合、ブロック６０６で、残余マネージャ３６６は、通常の方法でオペレーティングシステムをアクティブ化するよう、ログインロジック３６４に通知することができる。
【０１１７】
しかし、残余マネージャ３６６が、残余が十分にないと判定した場合、ブロック６０８で、残余マネージャ３６６は、アクティブ化ＵＩ３９６をアクティブ化することができる。アクティブ化ＵＩ３９６をアクティブ化する目的は、ユーザがさらなる使用時間を購入することを可能にすることである。
【０１１８】
ブロック６１０で、アクティブ化ＵＩ３９６は、購入マネージャ３８８をアクティブ化することができ、ユーザは購入を行うことができる。ユーザは、ビリングシステム２１６に接続することにより、カスタマサービス担当者を呼び出すことにより、または他の任意の所望される方法により、購入を行うことができる。次いで、ブロック６１２で、証明書／パケット要求マネージャ３８６は、プロビジョニングパケットをダウンロードすることができる。
【０１１９】
証明書／パケット要求マネージャ３８６は、セキュアストレージのために、ダウンロードされたプロビジョニングパケットをセキュアストレージマネージャ３５８に提供することができる。ブロック６１４で、残余マネージャ３６６は、ダウンロードされたプロビジョニングパケットを解析することができ、ブロック６１６で、その解析に応じて、コンピューティングデバイス２０２が利用可能であるプロビジョニング残余を増加させることができる。
【０１２０】
（シナリオ２−ログオン後の使用購入）  
図１４は、ＬＰＭ２２４の動作中の第２のシナリオを表すフローチャート６２０を示している。具体的には、フローチャート６２０は、ユーザがコンピューティングデバイス２０２に既にログオンしており、ユーザが残余マネージャ３６６をアクティブ化するコントロールパネルアプレットまたはタスクバーアイコンを選択するシナリオを表している。
【０１２１】
ブロック６２２で、ユーザは、イベントを残余マネージャ３６６に送信するコントロールパネルアプレットをアクティブ化することができる。残余マネージャ３６６は、現在の残余情報をユーザに表示し、アクティブ化ＵＩ３９６を呼び出すことによって、購入マネージャ３８８をアクティブ化することができる。ユーザがさらなる時間を購入すると、証明書／パケット要求マネージャ３８６は、プロビジョニングパケットをダウンロードすることができる。
【０１２２】
証明書／パケット要求マネージャ３８６は、セキュアストレージのために、ダウンロードされたプロビジョニングパケットをセキュアストレージマネージャ３５８に提供することができる。ブロック６２８で、残余マネージャ３６６は、ダウンロードされたプロビジョニングパケットを解析することができ、ブロック６３０で、その解析に応じて、コンピューティングデバイス２０２が利用可能であるプロビジョニング残余を増加させることができる。
【０１２３】
（シナリオ３−ログオン後の残余更新および残余通知）  
図１５は、ＬＰＭ２２４の動作中の第３のシナリオを表すフローチャート６４０を示している。具体的には、フローチャート６４０は、ユーザがコンピューティングデバイス２０２に既にログオンしており、ログインロジック３６４が、信頼できるクロックマネージャ３７０からの時間の刻みの結果、イベントを受信するシナリオを表している。
【０１２４】
ブロック６４２で、ログインロジック３６４は、信頼できるクロックマネージャ３７０から時間の刻みイベントを受信することができる。その結果、ログインロジック３６４は、時間の刻みイベントを残余マネージャ３６６に送信することができる。
【０１２５】
時間の刻みイベントに応答して、ブロック６４４で、残余マネージャ３６６は、コンピューティングデバイス２０２においてオペレーティングシステムを使用するために利用可能な残余を更新することができる。次いで、ブロック６４６で、残余マネージャ３６６は、利用可能な残余を調べる。その評価結果に基づいて、ブロック６４８で、残余マネージャ３６６は、適切なアクションを行うことができる。そのようなアクションとして、例えば、アクティブ化ＵＩ３９６をアクティブ化すること、ユーザをログオフすること、その他の適切なアクションを続けることが挙げられる。
【０１２６】
（シナリオ４−コンピューティングデバイスの非アクティブ化）  
図１６は、ＬＰＭ２２４の動作中の第４のシナリオを表すフローチャート６６０を示している。具体的には、フローチャート６６０は、ユーザがコンピューティングデバイス２０２に既にログオンしており、ログインロジック３６４が、信頼できるクロックマネージャ３７０からの時間の刻みの結果、イベントを受信するシナリオを表している。
【０１２７】
ブロック６６２で、ログインロジック３６４は、信頼できるクロックマネージャ３７０から時間の刻みイベントを受信することができる。その結果、ログインロジック３６４は、時間の刻みイベントを残余マネージャ３６６に送信することができる。
【０１２８】
時間の刻みイベントに応答して、ブロック６６４で、残余マネージャ３６６は、コンピューティングデバイス２０２においてオペレーティングシステムを使用するために利用可能な残余を更新することができる。次いで、ブロック６６６で、残余マネージャ３６６は、利用可能な残余を調べることができる。その評価結果に基づいて、ブロック６６８で、残余マネージャ３６６は、適切なアクションを行うことができる。そのようなアクションとして、例えば、アクティブ化ＵＩ３９６をアクティブ化すること、ユーザをログオフすること、その他の適切なアクションを続けることが挙げられる。
【０１２９】
例えば、このケースでは、残余マネージャ３６６は、コンピューティングデバイス２０２が利用可能である残余が、０などの閾値以下であることを識別する。その結果、ブロック６６８で、残余マネージャ３６６は、通知ＵＩ３９８が、ログオフメッセージを表示するようにさせることができ、最終的に、コンピューティングデバイス２０２におけるオペレーティングシステムを使用しているユーザをログオフさせる。代替のケースでは、通知ＵＩ３９８は、ユーザがさらなる使用時間を購入できるよう、購入マネージャ３８８をアクティブ化することもできる。
【０１３０】
（シナリオ５−ログオン後のプリペイド入力）  
図１７は、ＬＰＭ２２４の動作中の第５のシナリオを表すフローチャート６８０を示している。具体的には、フローチャート６８０は、ユーザがコンピューティングデバイス２０２に既にログオンしており、ユーザが、プリペイドカードからの情報を入力するためのアクティブ化ウィザードをアクティブ化するコントロールパネルアプレットまたはタスクバーアイコンを選択するシナリオを表している。このことは、ユーザがプリペイドカードを以前に購入しており、プリペイドカードによって取得することが可能な使用時間をユーザのアカウントに追加することを決定した場合に考えられ得るケースである。
【０１３１】
ブロック６８２で、ユーザは、イベントをアクティブ化ＵＩ３９６に送信するコントロールパネルアプレットをアクティブ化して、アクティブ化ウィザードを表示することができる。ユーザに表示され得るＧＵＩウィンドウの一例が、図１８の時間追加ウィンドウ６８４によって示されている。ユーザは、時間追加ウィンドウ６８４から時間追加ボタンを選択して、プリペイドカードからの情報を入力することができる。
【０１３２】
次いで、ブロック６８６で、アクティブ化ＵＩ３９６は、ユーザがアクティブ化ウィザードを使用できる必要がある可能性があるという様々な情報をユーザに通知することができる。これは、図１９にＧＵＩ６８８によって例示されている。
【０１３３】
ブロック６９０で、アクティブ化ＵＩ３９６は、ウェブサービス通信マネージャ３９０が、インターネットに接続してコアプロビジョニングサービス２０６にアクセスしていることをユーザに通知する、図２０に例示されるネットワーク接続ＧＵＩ６９２を提示することができる。
【０１３４】
次いで、ブロック６９４で、アクティブ化ＵＩ３９６は、プリペイド使用カードから得られるキーを入力するよう、ユーザを誘導することができる。プリペイドカード上のキーは、英数字またはその他の文字のストリングから構成され得る。このケースでは、キーは、図２１のＧＵＩ６９６に入力されるように例示される、２５文字の長さの英数字キーである。
【０１３５】
プリペイドカードからのキーを受信すると、ブロック６９８で、アクティブ化ＵＩ３９６は、図２２のＧＵＩ７００によって例示されるように、．ＮＥＴ（登録商標）システムにログインするよう、ユーザを誘導することができる。ユーザが．ＮＥＴ（登録商標）システムにログインすることは、必ずしも必要ではないことに留意されたい。
【０１３６】
次いで、ブロック７０２で、アクティブ化ＵＩ３９６は、プリペイドカードからのユーザのキーが受け入れられ、かつユーザのアカウントが対応する時間分だけ増加される必要があるという確認を、コアプロビジョニングサービス２０６から受信することができる。時間追加の成功を通知するメッセージは、図２３のＧＵＩ７０４によって例示されている。
【０１３７】
最後に、ブロック７０６で、アクティブ化ＵＩ３９６は、ユーザが、プリペイドカードを使用することによって追加したばかりの時間が、図２４のＧＵＩ７０８によって例示されるように数分内にコンピューティングデバイス２０２にクレジットされることを、ユーザに通知することができる。
【０１３８】
以上のテキストにより、本発明の複数の様々な実施形態の詳細な説明が提示されているが、本発明の範囲は、特許請求の範囲の用語によって定義されることを理解されたい。この詳細な説明は、単に例示的なものにすぎないと解釈されるべきであり、本発明の可能なすべての実施形態を説明するものではない。というのは、可能なすべての実施形態を記述することは、不可能ではないとしても、非現実的であるからである。既存の技術または本願の出願日後に開発された技術を用いることによって、多数の代替実施形態を具現化できるであろう。それらの代替実施形態もまた、本発明を定義する特許請求の範囲に属するものである。
【０１３９】
したがって、本発明の趣旨および範囲から逸脱することなく、本明細書で説明され示された技術および構造を用いて、多くの変形形態および変更形態が可能である。したがって、本明細書で説明した方法および装置は、例示的なものにすぎず、本発明の範囲を限定するものではないことに留意されたい。
【図面の簡単な説明】
【０１４０】
【図１】複数のコンピューティングリソースと相互接続するネットワークを示すブロック図である。
【図２】図１のネットワークに接続することができるコンピュータを示すブロック図である。
【図３】図１のネットワークにおけるコンピュータ上のオペレーティングシステムのプロビジョニングを行うためのソフトウェアプロビジョニングシステムを示すブロック図である。
【図４】図３のソフトウェアプロビジョニングシステムにおけるコンピュータの登録を示すフローチャートである。
【図５】図３のソフトウェアプロビジョニングシステムのコアプロビジョニングシステムを示すブロック図である。
【図６】図５のコアプロビジョニングシステムによって使用されるコアデータベースを示すブロック図である。
【図７】図３のコアソフトウェアプロビジョニングシステムによって使用される配信データベースを示すブロック図である。
【図８】図３のソフトウェアプロビジョニングシステムのローカルプロビジョニングモジュールを示すブロック図である。
【図９】図３のソフトウェアプロビジョニングシステムによって使用されるキー登録プログラムを示すフローチャートである。
【図１０】図３のソフトウェアプロビジョニングシステムによって使用されるパケット生成プログラムを示すフローチャートである。
【図１１】図３のソフトウェアプロビジョニングシステムによって使用されるブートストラッププログラムを示すフローチャートである。
【図１２】図３のソフトウェアプロビジョニングシステムによって使用されるパケット配信プログラムを示すフローチャートである。
【図１３】図８のローカルプロビジョニングモジュールに関する動作シナリオを示すフローチャートである。
【図１４】図８のローカルプロビジョニングモジュールに関する動作シナリオを示す別のフローチャートである。
【図１５】図８のローカルプロビジョニングモジュールに関する動作シナリオを示す別のフローチャートである。
【図１６】図８のローカルプロビジョニングモジュールに関する動作シナリオを示す別のフローチャートである。
【図１７】図８のローカルプロビジョニングモジュールに関する動作シナリオを示す別のフローチャートである。
【図１８】図１７の動作シナリオ中にユーザに提示される例示的なＧＵＩを示す図である。
【図１９】図１７の動作シナリオ中にユーザに提示される別の例示的なＧＵＩを示す図である。
【図２０】図１７の動作シナリオ中にユーザに提示される別の例示的なＧＵＩを示す図である。
【図２１】図１７の動作シナリオ中にユーザに提示される別の例示的なＧＵＩを示す図である。
【図２２】図１７の動作シナリオ中にユーザに提示される別の例示的なＧＵＩを示す図である。
【図２３】図１７の動作シナリオ中にユーザに提示される別の例示的なＧＵＩを示す図である。
【図２４】図１７の動作シナリオ中にユーザに提示される別の例示的なＧＵＩを示す図である。
【図１】
2008521095.tif 000003
【図２】
2008521095.tif 000004
【図３】
2008521095.tif 000005
【図４】
2008521095.tif 000006
【図５】
2008521095.tif 000007
【図６】
2008521095.tif 000008
【図７】
2008521095.tif 000009
【図８】
2008521095.tif 000010
【図９】
2008521095.tif 000011
【図１０】
2008521095.tif 000012
【図１１】
2008521095.tif 000013
【図１２】
2008521095.tif 000014
【図１３】
2008521095.tif 000015
【図１４】
2008521095.tif 000016
【図１５】
2008521095.tif 000017
【図１６】
2008521095.tif 000018
【図１７】
2008521095.tif 000019
【図１８】
2008521095.tif 000020
【図１９】
2008521095.tif 000021
【図２０】
2008521095.tif 000022
【図２１】
2008521095.tif 000023
【図２２】
2008521095.tif 000024
【図２３】
2008521095.tif 000025
【図２４】
2008521095.tif 000026