(57)【要約】  グループ内のコンピュータ間での共通ユーザ・アクセスおよびセキュアなリソース共有のための、サーバを持たない非管理セキュア・ワークグループをサポートするプラットフォームである。ユーザ・アカウントの同期は、非管理セキュア・ワークグループの各コンピュータにおいてアカウントを複製および修正することによって行われる。アカウント情報の変更は、非管理セキュア・ワークグループ内でコンピュータから他のコンピュータに宣伝される。非管理セキュア・ワークグループのコンピュータの１つで、その変更が現在のアカウント情報に反映されていないことが判明した場合、そのコンピュータは、更新されたアカウント情報を、宣伝する側のコンピュータに要求する。異なるコンピュータにおけるユーザ・アカウントの間にコンフリクトがあれば、これが解決されてから、非管理セキュア・ワークグループ内のユーザ・アカウントの同期が行われる。さらに、アプリケーション・プログラム・インターフェース（ＡＰＩ）により、アプリケーションは、ネットワーク・コンピュータ・システムおよび非管理セキュア・ワークグループのプロパティをクエリすること、および非管理セキュア・ワークグループに参加することが可能である。
2009503632.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータ実行可能命令が格納された、第１のコンピュータにおけるコンピュータ可読媒体であって、前記命令は、
（ａ）前記第１のコンピュータを非管理セキュア・ワークグループに参加（join）させるステップ、
（ｂ）前記第１のコンピュータに関連付けられた第１のアカウント情報を、前記非管理セキュア・ワークグループのメンバである第２のコンピュータに、複製用に、提供するステップ、
（ｃ）前記第２のコンピュータに関連付けられた第２のアカウント情報を取得するステップ、および
（ｄ）前記第２のアカウント情報を複製するステップ
を備える方法を実行するように構成されることを特徴とするコンピュータ可読媒体。
【請求項２】
（ｅ）前記第１のアカウント情報の変更が生じたことを決定すること、および
（ｆ）前記非管理セキュア・ワークグループのメンバである他の各コンピュータに前記変更を伝えることを実行する、さらなる、コンピュータ実行可能命令を有することを特徴とする請求項１に記載のコンピュータ可読媒体。
【請求項３】
前記（ｆ）は、
（ｆ）（１）前記他の各コンピュータに前記変更を宣伝することを実行する、コンピュータ実行可能命令を含むことを特徴とする請求項２に記載のコンピュータ可読媒体。
【請求項４】
前記（ｆ）は、
（ｆ）（２）前記第２のコンピュータからアカウント・バージョン情報を受け取ること、および
（ｆ）（３）（ｆ）（２）への応答として、より新しいユーザ・アカウントのリストを送ること
を実行する、コンピュータ実行可能命令を含むことを特徴とする請求項３に記載のコンピュータ可読媒体。
【請求項５】
前記（ｆ）は、
（ｆ）（２）ユーザ・アカウントのリストを求める第１の要求を前記第２のコンピュータから受け取ること、
（ｆ）（３）（ｆ）（２）への応答として、ユーザ・アカウントの前記リストを、対応する情報とともに、前記第２のコンピュータに送ること、
（ｆ）（４）前記第２のコンピュータから、指定されたユーザ・アカウントに対して関連付けられたアカウント情報を求める第２の要求を受け取ること、および
（ｆ）（５）（ｆ）（４）への応答として、前記関連付けられたアカウント情報を、前記第２のコンピュータに送ること
を実行する、コンピュータ実行可能命令を含むことを特徴とする請求項３に記載のコンピュータ可読媒体。
【請求項６】
前記指定されたユーザ・アカウントの少なくとも１つのプロパティは、修正されていることを特徴とする請求項５に記載のコンピュータ可読媒体。
【請求項７】
前記指定されたユーザ・アカウントが、前記第１のアカウント情報に追加されていることを特徴とする請求項５に記載のコンピュータ可読媒体。
【請求項８】
（ｅ）関連付けられたアカウント情報の変更が、前記非管理セキュア・ワークグループのメンバである、前記第１のコンピュータ以外の、コンピュータにおいて生じていることを決定すること、
（ｆ）前記第１のコンピュータ以外の前記コンピュータから、指定されたアカウント情報を取得すること、および
（ｇ）前記第１のコンピュータと、前記第１のコンピュータ以外の前記コンピュータとの間で、前記指定されたアカウント情報を自動的に同期させること
を実行する、さらなる、コンピュータ実行可能命令を有することを特徴とする請求項１に記載のコンピュータ可読媒体。
【請求項９】
前記（ｇ）は、
（ｇ）（１）前記指定されたアカウント情報とのコンフリクトが存在するかどうかを検出すること、
（ｇ）（２）検出されたコンフリクトを解決すること、
（ｇ）（３）前記指定されたアカウント情報でユーザ・アカウント・データ構造を更新すること、および
（ｇ）（４）解決されたコンフリクトを、前記非管理セキュア・ワークグループの他のメンバにパブリッシュすること
を実行する、コンピュータ実行可能命令を含むことを特徴とする請求項８に記載のコンピュータ可読媒体。
【請求項１０】
前記（ｅ）は、
（ｅ）（１）前記第１のコンピュータ以外の前記コンピュータから宣伝を受け取ることを実行する、
コンピュータ実行可能命令を含むことを特徴とする請求項８に記載のコンピュータ可読媒体。
【請求項１１】
前記（ｆ）は、
（ｆ）（１）（ｄ）への応答として、前記第１のコンピュータ以外の前記コンピュータに対し、バージョン情報に従うユーザ・アカウントのリストを提供するよう要求すること
を実行する、コンピュータ実行可能命令を含むことを特徴とする請求項８に記載のコンピュータ可読媒体。
【請求項１２】
前記（ｆ）は、
（ｆ）（２）より新しいユーザ・アカウントを含む前記リストを、前記第１のコンピュータ以外の前記コンピュータから受け取ること
を実行する、コンピュータ実行可能命令を含むことを特徴とする請求項１１に記載のコンピュータ可読媒体。
【請求項１３】
前記第１のアカウント情報は削除されることを特徴とする請求項２に記載のコンピュータ可読媒体。
【請求項１４】
非管理セキュア・ワークグループをサポートするコンピュータ・システムであって、
前記非管理セキュア・ワークグループの作成、前記非管理セキュア・ワークグループへの参加（joining）、および前記非管理セキュア・ワークグループの処理、を行うセキュア・グループ・サービス・モジュール、および
アプリケーションが、前記コンピュータ・ネットワーク内の非管理セキュア・ワークグループに関する情報を取得すること、前記非管理セキュア・ワークグループを作成すること、前記非管理セキュア・ワークグループに参加（join）すること、および前記非管理セキュア・ワークグループから離脱すること、を行うことを可能にするアプリケーション・プログラム・インターフェース（ＡＰＩ）モジュール
を備えることを特徴とするコンピュータ・システム。
【請求項１５】
前記アプリケーション・プログラム・インターフェース・モジュールは、前記セキュア・グループ・サービス・モジュールにクエリすることにより、前記コンピュータ・ネットワーク内の非管理セキュア・ワークグループおよびメンバになっていないコンピュータからなるリストを、前記アプリケーションに提供することを特徴とする請求項１４に記載のコンピュータ・システム。
【請求項１６】
前記アプリケーション・プログラム・モジュールは、前記セキュア・グループ・サービス・モジュールにクエリすることにより、選択された非管理セキュア・ワークグループの属性を含む、前記選択された非管理セキュア・ワークグループに関する情報、および前記選択された非管理セキュア・ワークグループのメンバ・コンピュータのリストを、前記アプリケーションに提供することを特徴とする請求項１４に記載のコンピュータ・システム。
【請求項１７】
前記アプリケーション・プログラム・モジュールは、前記セキュア・グループ・サービス・モジュールにクエリすることにより、非管理セキュア・ワークグループ内のコンピュータに関する情報を、前記アプリケーションに提供することを特徴とする請求項１４に記載のコンピュータ・システム。
【請求項１８】
前記アプリケーション・プログラム・モジュールは、前記セキュア・グループ・サービス・モジュールに命令することにより、前記アプリケーションから、新しい非管理セキュア・ワークグループを前記コンピュータ・ネットワーク内に作成することを許可することを特徴とする請求項１４に記載のコンピュータ・システム。
【請求項１９】
前記アプリケーション・プログラム・モジュールは、前記セキュア・グループ・サービス・モジュールに命令することにより、前記アプリケーションから、前記コンピュータ・システムが前記コンピュータ・ネットワーク内の前記非管理セキュア・ワークグループに参加（join）したり、前記非管理セキュア・ワークグループから離脱したりすることを許可することを特徴とする請求項１４に記載のコンピュータ・システム。
【請求項２０】
コンピュータ実行可能命令が格納された、第１のコンピュータにおけるコンピュータ可読媒体であって、前記命令は、
（ａ）非管理セキュア・ワークグループの非メンバである前記第１のコンピュータに関連するアカウントを確立するために、前記非管理セキュア・ワークグループのメンバである第２のコンピュータに自己署名証明書を送るステップ、
（ｂ）前記第２のコンピュータの関連する証明書、共有秘密、および前記非管理セキュア・ワークグループのコピーされた証明書を格納するステップ、
（ｃ）前記第２のコンピュータの対応するアカウントを前記第１のコンピュータ上に作成するステップ、
（ｄ）前記第１のコンピュータが、前記非管理セキュア・ワークグループのワークグループ・メンバであることをブロードキャストするステップ、および
（ｅ）アカウント情報を前記第２のコンピュータと同期させるステップ
を含む方法を実行するように構成されることを特徴とするコンピュータ可読媒体。
【発明の詳細な説明】
【背景技術】
【０００１】
コンピュータ・ネットワーク技術の進歩に伴い、大規模コンピュータ・ネットワークは、ネットワークのユーザ・アクセスおよびセキュリティを管理する先進的な管理方式によって、非常に複雑になっている。たとえば、大規模コンピュータ・ネットワークは、典型的には、複数のドメインを有し、各ドメインは、そのドメインにあるマシンに対するユーザ名、パスワード、およびパーミッション（permissions）のデータベースを収容するプライマリ・ドメイン・コントローラを有する。
【０００２】
これに対し、家庭内ネットワークや小規模事業所ネットワークのような小規模ローカル・ネットワークは、どちらかといえば単純なままであり、先進的とは言えない。小規模ネットワークのほとんどは、大規模ネットワークにおけるドメイン・コントローラのような、集中方式でアカウント情報を処理する専用エンティティがないという点で、非管理状態である。そのような非管理ネットワーク（unmanaged network）におけるマシンは、通常、同じネットワーク・ハブに接続され、ゆるいピア・ツー・ピア・グループ（loose peer-to-peer group）（「ワークグループ」と呼ばれることもある）として動作する。これは、ユーザがそのワークグループ内でプリンタや共有フォルダのようなものを見つけることを支援することのみを意図したグループである。それ以外では、各マシンは、スタンド・アロン・マシンのように動作する。したがって、非管理ネットワークは、わずかの付加価値しかユーザに提供しない。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
非管理ネットワークには、効果的なセキュリティ管理は存在せず、複数のマシン同士は、ネットワーク・アクセスおよびリソース共有を推進するための統合が良好に行われていない。ローカル・アカウントの作成は、マシンごとに手動で行われなければならず、そのワークグループ内の異なるマシン上のアカウントには関係が存在しない。したがって、ユーザは、１つのマシンにはログオンできても、そのユーザのアカウントが別のマシンにおいてセットアップされていないと言う理由で、同じネットワークにある別のマシンにはログオンできない場合がある。そこには、ネットワーク内のコンピュータを列挙する、信頼できるメカニズムは存在しない。また、それらのマシン上のリソースを共有することは、実装したり、維持したりすることが困難である場合があり、セキュリティを与えるための管理も困難である場合がある。
【課題を解決するための手段】
【０００４】
ネットワーク・コンピュータ・システムが、１つのコンピュータから別のコンピュータに移動する可能性のあるユーザをサポートするのは、よくあることである。発明が解決しようとする課題に鑑みて、本発明は、コンピュータ・ネットワーク上の複数のコンピュータを、サーバを持たない非管理セキュア・ワークグループ（unmanaged secured workgroup）に編成するためのプラットフォームを提供する。この非管理セキュア・ワークグループは、グループ内のコンピュータ間での共通ユーザ・アクセスおよびセキュアなリソース共有を可能にする。本発明の態様によれば、非管理セキュア・ワークグループのコンピュータの１つでユーザ・アカウント情報の修正または追加が行われると、非管理セキュア・ワークグループの各コンピュータにおいてユーザ・アカウントの同期が行われる。非管理セキュア・ワークグループ内のアカウント情報を同期させるために、ユーザ・アカウントを複製または修正することが可能である。
【０００５】
本発明の別の態様によれば、非管理セキュア・ワークグループにおいて、コンピュータが他のコンピュータにアカウント情報の変更を宣伝（advertise）する。非管理セキュア・ワークグループのコンピュータの１つで、その変更が現在のアカウント情報に反映されていないことが判明した場合、そのコンピュータは、更新されたアカウント情報を、宣伝する側のコンピュータに要求することが可能である。
【０００６】
本発明の別の態様によれば、本発明は、非管理セキュア・ワークグループ内の更新されたユーザ・アカウントを同期させる前に、ユーザ・アカウントのコンフリクトが存在するかどうかを判定する。コンフリクトが解決されると、非管理セキュア・ワークグループの各コンピュータにおいて、変更されたユーザ・アカウントが複製される。
【０００７】
本発明の別の態様によれば、アプリケーションが、ネットワーク・コンピュータ・システムおよび非管理セキュア・ワークグループのプロパティをクエリすることを、アプリケーション・プログラム・インターフェース（ＡＰＩ）が可能にする。本発明の例示的実施形態では、ＡＰＩが、コンピュータ・ネットワーク内の非管理セキュア・ワークグループのリストを提供し、指定された非管理セキュア・ワークグループに関する情報を提供し、非管理セキュア・ワークグループ内の指定されたコンピュータに関する情報を提供し、新しい非管理セキュア・ワークグループを作成し、非管理セキュア・ワークグループにコンピュータが参加（join）したり、非管理セキュア・ワークグループからコンピュータが離脱したりすることを許可する。
【０００８】
本発明の別の態様によれば、要求する側のコンピュータが、非管理セキュア・ワークグループ内のメンバ・コンピュータからの信頼を確立することによって、非管理セキュア・ワークグループに参加する。そのメンバ・コンピュータは、要求する側のコンピュータを認証する。要求する側のコンピュータは、自己署名証明書を用いて、そのメンバ・コンピュータ上にアカウントを確立する。その後、要求する側のコンピュータは、非管理セキュア・ワークグループに関する情報を格納し、自身を非管理セキュア・ワークグループのメンバとしてパブリッシュする。
【０００９】
この「発明の開示」は、後で「発明を実施するための最良の形態」において詳述される概念をひととおり簡潔に紹介するために設けられたものである。この「発明の開示」は、請求の範囲に記載された対象の重要な特徴または必須の特徴を識別することを意図したものではなく、請求の範囲に記載された対象の範囲を決定することを助けるものとして用いられることを意図したものでもない。
【００１０】
上述の本発明の概要、ならびに以下の、本発明の例示的実施形態の詳細説明は、添付図面と併せて読むことにより、よりよい理解が可能である。添付図面は、請求の範囲に記載された本発明に関する限定としてではなく、例として含まれている。
【発明を実施するための最良の形態】
【００１１】
類似の参照符号が類似の要素を表す添付図面では、本発明を、好適なコンピューティング環境に実装されるものとして例示している。必須ではないが、本発明の説明は、パーソナル・コンピュータで実行される、コンピュータ実行可能命令（プログラム・モジュールなど）の一般コンテクストで行うものとする。一般に、プログラム・モジュールは、特定のタスクを実行したり、特定の抽象データ型を実装したりする、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造体などを含む。さらに、当業者であれば、本発明が、他のコンピュータ・システム構成（たとえば、ハンドヘルド装置、マルチプロセッサ・システム、マイクロ・プロセッサ・ベースの、またはプログラム可能な、家庭用電子機器、ネットワークＰＣ、ミニ・コンピュータ、メインフレーム・コンピュータなど）でも実施可能であることを理解されよう。本発明は、通信ネットワークでリンクされたリモート処理装置でタスクが実行される分散コンピューティング環境で実施されることが可能である。分散コンピューティング環境では、プログラム・モジュールがローカルおよびリモートの両方のメモリ・ストレージ装置に格納されることが可能である。
【００１２】
以下の用語の定義は、詳細説明の理解に役立つように示したものである。
・ドメイン：ドメイン・コントローラ（たとえば、サーバ）によって集中管理されるネットワーク・コンピュータのグループ。ドメイン・コントローラは、そのドメインについてのユーザ・アクセスおよびセキュリティを管理する。ドメイン・コントローラは、通常、そのドメインにあるコンピュータ（マシン）に対するユーザ名（user name）、パスワード（password）、およびパーミッション（permission）のデータベースを収容する。
・非管理セキュア・ワークグループ：サーバなしでユーザ・アクセスおよびセキュリティが提供される、ネットワーク・コンピュータのピア・ツー・ピア・グループ。通常、ピア・ツー・ピア・グループ内の各コンピュータ（マシン）にアカウント・データ構造体が保持される。概念的には、非管理セキュア・ワークグループを、ローカル・ネットワーク内に存在するコンピュータのセキュア・グループと見ることが可能である。この中では、コンピュータ同士が協同して、外部のユーザおよびマシンによってありうる侵入から自身らを保護する一方、セキュア・グループ内のユーザは、そのグループのマシンおよびリソースにアクセスする際に高度の免除および連携（freedom and cooperation）が得られる。
【００１３】
以下では、本発明の例示的態様による小規模非管理セキュア・ワークグループで使用可能な汎用コンピューティング装置について説明する。図１は、汎用コンピューティング装置を、通常のパーソナル・コンピュータ２０のかたちで示したものであり、これには、処理ユニット２１、システム・メモリ２２、および、システム・メモリをはじめとする様々なシステム・コンポーネントを処理ユニット２１に結合するシステム・バス２３が含まれる。システム・バス２３は、様々なバス・アーキテクチャのうちの任意のものを用いるメモリバスまたはメモリ・コントローラ、ペリフェラル・バス、およびローカル・バスを含む、様々なタイプのバス構造のうちの任意のものであってよい。システム・メモリは、読み出し専用メモリ（ＲＯＭ）２４およびランダム・アクセス・メモリ（ＲＡＭ）２５を含む。起動時などにパーソナル・コンピュータ２０内の各要素間の情報転送を支援する基本ルーチンを収容する基本入出力システム（ＢＩＯＳ）２６が、ＲＯＭ２４に格納される。パーソナル・コンピュータ２０はさらに、ハードディスク６０の読み書きを行うハードディスク・ドライブ２７、リムーバブル磁気ディスク２９の読み書きを行う磁気ディスク・ドライブ２８、およびＣＤ−ＲＯＭや他の光媒体のようなリムーバブル光ディスク３１の読み書きを行う光ディスク・ドライブ３０を含む。
【００１４】
ハードディスク・ドライブ２７、磁気ディスク・ドライブ２８、および光ディスク・ドライブ３０は、それぞれ、ハードディスク・ドライブ・インターフェース３２、磁気ディスク・ドライブ・インターフェース３３、および光ディスク・ドライブ・インターフェース３４によってシステム・バス２３に接続される。ドライブとそれに関連付けられたコンピュータ可読媒体は、パーソナル・コンピュータ２０用のコンピュータ可読命令、データ構造体、プログラム・モジュール、および他のデータの不揮発性ストレージを提供する。本明細書に記載の例示的環境では、ハードディスク６０、リムーバブル磁気ディスク２９、およびリムーバブル光ディスク３１を用いているが、当業者であれば、コンピュータによるアクセスが可能なデータを格納することができる他のタイプのコンピュータ可読媒体（たとえば、磁気カセット、フラッシュ・メモリ・カード、デジタル・ビデオ・ディスク、ベルヌーイ・カートリッジ、ランダム・アクセス・メモリ、読み出し専用メモリ、ストレージ・エリア・ネットワークなど）も、この例示的オペレーティング環境において使用可能であることを理解されよう。
【００１５】
ハードディスク６０、磁気ディスク２９、光ディスク３１、ＲＯＭ２４、またはＲＡＭ２５には、オペレーティング・システム３５、１つまたは複数のアプリケーション・プログラム３６、他のプログラム・モジュール３７、およびプログラム・データ３８を含む、いくつかのプログラム・モジュールを格納することが可能である。ユーザは、キーボード４０やポインティング装置４２などの入力装置を介してパーソナル・コンピュータ２０にコマンドおよび情報を入力することが可能である。他の入力装置（図示せず）として、マイク、ジョイスティック、ゲーム・パッド、パラボラ・アンテナ、スキャナなども可能である。これらおよび他の入力装置は、システム・バスと結合されているシリアル・ポート・インターフェース４６を介して処理ユニット２１に接続されることが多いが、他のインターフェース（たとえば、パラレル・ポート、ゲーム・ポートまたはユニバーサル・シリアル・バス（ＵＳＢ）、またはネットワーク・インターフェース・カードなど）で接続されることも可能である。モニタ４７または他のタイプのディスプレイ装置も、ビデオ・アダプタ４８のようなインターフェースを介してシステム・バス２３に接続される。モニタに加えて、パーソナル・コンピュータは、典型的には、他のペリフェラル出力装置（図示せず）（スピーカやプリンタなど）を含む。
【００１６】
パーソナル・コンピュータ２０は、ネットワーク環境において、１つまたは複数のリモート・コンピュータ（リモート・コンピュータ４９など）との論理接続を用いて動作することが可能である。リモート・コンピュータ４９は、別のパーソナル・コンピュータ、サーバ、ルータ、ネットワークＰＣ、ピア装置、または他の共有ネットワークノードであってよく、典型的には、パーソナル・コンピュータ２０に対して相対的な上述の要素の多数またはすべてを含むが、図１には、メモリ・ストレージ装置５０のみを示した。図１に示された論理接続は、ローカル・エリア・ネットワーク（ＬＡＮ）５１およびワイド・エリア・ネットワーク（ＷＡＮ）５２を含む。そのようなネットワーキング環境は、オフィス、事業体規模のコンピュータ・ネットワーク、イントラネット、およびインターネットでは、ごく一般的なものである。
【００１７】
パーソナル・コンピュータ２０は、ＬＡＮネットワーキング環境で使用された場合には、ネットワーク・インターフェースまたはアダプタ５３を介してローカル・ネットワーク５１と接続される。ＷＡＮネットワーク環境で使用された場合には、パーソナル・コンピュータ２０は、典型的には、モデム５４または他の、ＷＡＮ５２経由の通信を確立する手段を含む。モデム５４は、内蔵でも外付けでもよく、シリアル・ポート・インターフェース４６を介してシステム・バス２３に接続される。ネットワーク環境では、パーソナル・コンピュータ２０またはその一部に対して相対的に示されているプログラム・モジュールは、リモート・メモリ・ストレージ装置に格納可能である。図示されたネットワーク接続は例示的であって、コンピュータ間の通信リンクを確立する他の手段を用いることも可能であることを理解されたい。
【００１８】
以下の説明では、特に断らない限り、操作と、１つまたは複数のコンピュータによって実行される動作のシンボリック表現とに関して、本発明を説明する。したがって、そのような操作と（コンピュータによって実行される、と称されることもある）動作とは、コンピュータの処理ユニットによる、データを構造体形式で表現する電気信号の操作を含むことを理解されたい。この操作は、データを変換するか、コンピュータのメモリ・システム内の場所に保持する。これによって、コンピュータの動作は、当業者であればよく理解される形式で、再構成もしくは変更される。データが保持されるデータ構造は、データのフォーマットで定義される特定のプロパティを有する、メモリの物理的位置である。しかしながら、本発明は前述のコンテクストで説明されるが、これは限定的であることを意図しておらず、当業者であれば理解されるように、以下で説明する操作および動作は、ハードウェアで実装されることも可能である。
【００１９】
図２は、本発明の例示的実施形態を示しており、これは、非管理ローカル・ネットワーク２００上の少数のコンピュータ（たとえば、１０台以下のメンバ・コンピュータ）が非管理セキュア・ワークグループを形成して、集中管理コンポーネントの使用を必要とせずに、ユーザ・アクセスおよびリソース共有をグループ全体として制御するプラットフォームを示している。例示的実施形態では、非管理ローカル・ネットワーク２００は、ピア・ツー・ピア関連付け（peer-to-peer association）により構成されている。非管理ローカル・ネットワーク２００は、ユーザ・アカウント情報を管理および格納する中央サーバがないため、非管理として分類される。非管理セキュア・ワークグループでは、グループに属さないコンピュータまたはユーザによる不正アクセスおよびリソース使用を防ぎ、同時に、グループ内でのリソース共有を個々のユーザ単位で可能にするために、セキュリティ・ポリシーおよびアクセス制御がグループ全体として実装される。
【００２０】
本発明の例示的実施形態として、図２は、家庭内ネットワークおよび小規模事業所ネットワークの典型である、小規模ローカル・ネットワーク７０を示している。このローカル・ネットワークは、ドメイン・コントローラなどのような集中管理コンポーネントを持たないという意味で、非管理である。図２に示されるように、このローカル・ネットワークは、ネットワーク・ハブまたはスイッチ７２を有し、複数のコンピュータ（またはコンピューティング装置）がこれに接続されている。コンピュータ間の接続は、無線であってよい。たとえば、装置７６は、アクセス・ポイント７８を介してネットワークと通信する無線装置である。
【００２１】
本発明の例示的態様によれば、ローカル・ネットワーク７０上のコンピュータのいくつかが、非管理セキュア・ワークグループを形成することが可能である。非管理セキュア・ワークグループは、ネットワークの特定のトポロジに依存しないことを理解されたい。たとえば、無線装置で形成されたアドホック・ネットワークにおいて非管理セキュア・ワークグループを確立することが可能である。管理上の問題とデータの複製が必要であることから、非管理セキュア・ワークグループ・プラットフォームは、グループ内のコンピュータの台数が少なく保たれれば、より効果的に動作する。たとえば、所与の非管理セキュア・ワークグループに参加できるコンピュータの数を、所定の最大数（たとえば、１つの非管理セキュア・ワークグループに１０台のメンバ）に限定することが可能である。
【００２２】
たとえば、図２に示されるように、コンピュータ９０、９２、９４、および９６が、ユーザ・フレンドリ名「ＴｏｂｙＣｌｕｂ」を有する（コンピュータ同士をつなぐ破線で摸式図的に示された）非管理セキュア・ワークグループ１００を形成している。参加すべき既存グループがない場合、あるいは、コンピュータのユーザがどの既存グループにも参加したくない場合には、新しい非管理セキュア・ワークグループを作成することが可能である。この点において、本発明の例示的実施形態では、各コンピュータは、１つの非管理セキュア・ワークグループにのみ属することが可能である。後で詳述するように、非管理セキュア・ワークグループ内のコンピュータは、互いの間で信頼を確立しており、グループ内のユーザ・アカウント・データやユーザ・プロファイル・データのような情報を共有している。コンピュータ１０２のような新しいコンピュータが非管理セキュア・ワークグループ１００に参加することが可能であり、グループ内のコンピュータは、そのセキュア・ワークグループを離脱することが可能であり、特殊なケースでは、そのグループから追放されることもありうる。
【００２３】
非管理ローカル・ネットワーク上に小規模非管理セキュア・ワークグループを形成することの基礎をなす概念を、図３に示す。非管理セキュア・ワークグループを形成するために、コンピュータ１０２が別のコンピュータ９６と合流する場合、コンピュータ１０２は、最初に、第２のコンピュータ９６からの信頼を確立しなければならない。これが行われるのは、コンピュータ９６が属する既存のセキュア・ワークグループにコンピュータ１０２が参加しようとする場合か、コンピュータ９６からの、新しいグループを形成する誘いにコンピュータ１０２が応じる場合である。２つのコンピュータの間で信頼を確立するには、様々な方法がある。典型的には、信頼を確立するには、一方のコンピュータが、他方のコンピュータに対して、他方のコンピュータが知っている何らかの秘密を知っていることを示すことによって、自身を認証することが必要である。本発明の例示的実施形態では、その秘密は、他方のコンピュータに受け入れられたグループ管理者のユーザ名およびパスワードである。別の例示的実施形態では、その秘密は、他方のコンピュータで生成された、ランダムなパーソナル識別番号（personal identification number）（ＰＩＮ）である。実装によっては、２つのコンピュータの間の相互認証が必要とされる場合がある。２つのコンピュータの間で信頼を確立する具体的な方法は、本発明にとって重要ではないことを理解されたい。
【００２４】
コンピュータ９６および１０２の間で信頼が確立された後、それらのコンピュータは、非管理セキュア・ワークグループを形成する。あるいは、コンピュータ９６が既存の非管理セキュア・ワークグループに属している場合には、コンピュータ１０２がそのグループに受け入れられる。これを受けて、例示的実施形態では、各非管理セキュア・ワークグループおよびそのセキュア・ワークグループ内の各ノードに、一意識別子であるＧＵＩＤ（グローバル一意識別子）が割り当てられる。コンピュータが（新しいグループを作成するか、既存のグループに参加することによって）非管理セキュア・ワークグループのメンバになると、そのマシンのＧＵＩＤ、およびそのマシン上のユーザ・アカウントのＧＵＩＤが、変更または再作成されて、そのグループのＧＵＩＤになり、そのネットワークグループの権限／識別情報（authority/identities）が反映される。
【００２５】
非管理セキュア・ワークグループが形成された後、ユーザ・アカウント・データおよびユーザ・プロファイルがグループ内の各コンピュータに複製される。図３に示されるように、コンピュータ９６上のユーザ・アカウント・データ１１０がコンピュータ１０２に複製され、コンピュータ１０２上のユーザ・アカウント・データ１１０がコンピュータ９６に複製される。ユーザ・アカウントが複製された後、それらのユーザ・アカウントに関連付けられたユーザ・プロファイル１１２が他方のコンピュータに複製される。「ユーザ・プロファイル」という用語は、本明細書では、特定のユーザに関連するデータを意味する。たとえば、ユーザ・プロファイルは、そのユーザ、そのユーザの選択された文書、およびセキュリティ・ポリシーに関するレジストリ設定、ユーザ・タイル（すなわち、そのユーザのアイコン化表現）、ならびに、ユーザ・セッションをパーソナライズするための設定、構成、およびファイルなどを含むことが可能である。ユーザ・プロファイルの具体的なコンテンツは、実装によって異なる。セキュア・ワークグループの管理者が、ユーザ・アカウントを作成し、グループ内の１つのコンピュータに対してセキュリティ・ポリシーを設定することが可能であり、それらのアカウントおよびセキュリティ・ポリシーが、セキュア・ワークグループ内のすべてのマシンに複製される。グループ内の各コンピュータが、すべてのユーザ・アカウントおよびユーザ・プロファイルを有するため、有効なアカウントを有するユーザは、自分のユーザ名およびパスワードでグループ内の任意のコンピュータにログオンすることが可能である。ユーザ・タイルや、パーソナライズされたユーザ・セッションのための設定、構成、およびファイルのようなデータを複製することにより、ユーザは、非管理セキュア・ワークグループ内のコンピュータ全体にわたって均質のユーザ・エクスペリエンス（ユーザ体験）を有することも可能になる。本発明の実施形態では、アカウント・データおよびユーザ・プロファイルのサブセットを、文字どおりに同期させる代わりに、実質的に統一することが可能である。本発明の実施形態は、アプリケーションの仮想化／同期をサポートする。この場合、ユーザは、非管理セキュア・ワークグループの１つのメンバにアプリケーションをインストールした後、非管理セキュア・ワークグループのその他のメンバにそのソフトウェアをインストールすることなく、その他の任意のメンバからそのアプリケーションを使用することが可能である。
【００２６】
図２に戻ると、本発明の例示的実施形態では、非管理セキュア・ワークグループに参加することが可能なコンピュータ９６に、非管理セキュア・ワークグループの作成、非管理セキュア・ワークグループへの参加、および非管理セキュア・ワークグループの操作を行うセキュア・グループ・サービス・モジュール１１６が提供される。コンピュータ９６はさらに、ローカル・セキュリティ・オーソリティ（ＬＳＡ）１１８、およびセキュリティ・アカウント・マネージャ（ＳＡＭ）１２０を有する。ローカル・セキュリティ・オーソリティ１１８は、ローカル・システム・セキュリティ・ポリシー、ユーザ認証、およびオペレーティング・システムのイベント・ログへのセキュリティ・メッセージ送信を担当するユーザ・モード・プロセスである。セキュリティ・ポリシーは、たとえば、マシンへのログオンを許可されているユーザ、パスワード・ポリシー、ユーザおよびグループに許可されている特権、システム・セキュリティ監査設定などを指定する。セキュリティ・アカウント・マネージャ１２０は、マシンへのアクセスを許可されているユーザおよびグループを識別するデータを、それらのパスワードおよび他の属性とともに収容する、コンピュータのシステム・レジストリに格納されているデータベースを管理する。コンピュータはさらに、選択された認証プロトコルに従って認証動作を実行する１つまたは複数の認証モジュール（Ｗｉｎｄｏｗｓ（登録商標）ＮＴ（登録商標）ＬＡＮ  Ｍａｎａｇｅｒ（ＮＴＬＭ）モジュール１２２またはケルベロス（Kerberos）・モジュール１２６など）を含む。さらに、ユーザ・アカウントおよびユーザ・プロファイルを含むデータおよびファイルを非管理セキュア・ワークグループ内の他のコンピュータに複製するために、Ｆｉｌｅ  Ｒｅｐｌｉｃａｔｉｏｎ  Ｓｅｒｖｅｒ（ＦＲＳ）１２８が使用される。
【００２７】
図２に示された実施形態では、アプリケーション１２１が、ＡＰＩレイヤ・モジュール１１９を介して、非管理セキュア・ワークグループの作成、非管理セキュア・ワークグループへの参加、および非管理セキュア・ワークグループの操作を行うセキュア・グループサービス・モジュール１１６とインターフェースされる。後述されるように、ＡＰＩレイヤ・モジュール１１９は、非管理セキュア・ワークグループに関する情報を取得し、非管理セキュア・ワークグループを作成し、非管理セキュア・ワークグループに参加し、非管理セキュア・ワークグループから離脱するためのアプリケーション・プログラム・インターフェース（ＡＰＩ）をサポートする。
【００２８】
次に図２および図４の両方を参照すると、本発明の例示的実施形態では、スタンドアロン・コンピュータ１０２がローカル・ネットワーク７０に接続され、電源投入されると（ステップ１７０）、そのオペレーティング・システムが、ローカル・ネットワーク上に非管理セキュア・ワークグループが存在するかどうかを自動的に検出する（ステップ１７２）。これを受けて、コンピュータ１０２は、そのローカル・ネットワークに接続されているその他のマシンを検出するために、シンプル・サービス検出プロトコル（Simple Service Discovery Protocol）（ＳＳＤＰ）に従って検出要求１３６をブロードキャストする。この場合、セキュア・ワークグループに属しているコンピュータ９６のセキュア・グループ・サービス・モジュール１１６は、そのセキュア・ワークグループのフレンドリ名およびＧＵＩＤをコンピュータのＳＳＤＰサービス１３８に既に登録している。ローカル・ネットワーク７０上の各コンピュータは、ＳＳＤＰ要求に対して応答を返す。応答は、応答する側のコンピュータを識別し、そのコンピュータが非管理セキュア・ワークグループに含まれるかどうかを明らかにし、含まれる場合は、そのグループに関する情報を示す。たとえば、コンピュータ９６からの応答１５０は、コンピュータ９６が「ＴｏｂｙＣｌｕｂ」という非管理セキュア・ワークグループのメンバであることを示すグループ名１５２を含む。
【００２９】
本発明の実施形態では、コンピュータ１０２が、ローカル・ネットワーク上で１つまたは複数の既存の非管理セキュア・ワークグループを検出した場合（ステップ１７６）、そのユーザ１５８（図２の「Ｐａｔｒｉｃｋ」）がログインすると、ユーザ・インターフェース・ウィンドウがポップアップ表示され、そのコンピュータが既存の非管理セキュア・ワークグループのいずれかに参加することをそのユーザが望むかどうかを尋ねられる（ステップ１７８）。ユーザ・インターフェース・ウィンドウの例を、図５に示す。ユーザ・インターフェース・ウィンドウ１６０は、そのコンピュータが検出した、ローカル・ネットワーク上の既存の非管理セキュア・ワークグループのリスト１６２を提供し、ユーザは、いずれかのグループの名前をクリックすることにより、参加するグループを選択することが可能である。ローカル・ネットワーク上で既存の非管理セキュア・ワークグループが検出されていない場合、このリストは空である。このユーザ・インターフェースはさらに、新しい非管理セキュア・ワークグループを作成するオプションをユーザに与えるクエリ１６６を含む。したがって、既存の非管理セキュア・ワークグループがない場合には、ユーザは、新しい非管理セキュア・ワークグループを作成することを選択できる（ステップ１８０）。ローカル・ネットワーク上に非管理セキュア・ワークグループが存在する場合でも、ユーザは、いずれかの既存のグループに参加するのではなく、新しいグループを作成することを選択できる。たとえば、ローカル・ネットワーク上のコンピュータ８８がどのセキュア・ワークグループのメンバでもないこと（すなわち、コンピュータ８８が「スタンドアロン」マシンであること）を、コンピュータ１０２が検出した場合、ユーザ１５８は、新しいセキュア・ワークグループ（１つのコンピュータからなるセキュア・ワークグループ）を作成して（ステップ１８４）、コンピュータ８８をそのグループに参加するよう勧誘する（ステップ１８６）ことを決定することが可能である。
【００３０】
ユーザ１５８（「Ｐａｔｒｉｃｋ」）が、新しい非管理セキュア・ワークグループを作成するオプションを選択した場合（ステップ１８０）、セキュア・グループ・サービス・モジュール１１６は、新しいグループのＧＵＩＤを新しく作成し、そのコンピュータのアカウント・ドメインＧＵＩＤを、そのグループの新しいＧＵＩＤに変更する。次に、セキュア・グループ・サービス・モジュール１１６は、「セキュア・グループ・ノード」グループを作成する。このグループは、その非管理セキュア・ワークグループにあるコンピュータを表すコンピュータ・アカウントを収容するローカル・セキュリティ・グループである（「セキュア・グループ・ノード」は、グループ名の例である。この実施形態は、他のグループ名も同様にサポートする）。「セキュア・グループ・ノード」グループとしてリストされたコンピュータだけが、そのグループの他のコンピュータとの複製を実行することが可能である。強力かつランダムなパスワードを有するアカウントを作成することが可能である。
【００３１】
セキュア・グループ・サービス１６８はさらに、新しい非管理セキュア・ワークグループの１人または複数人の管理者の資格証明を保持する「セキュア・グループ管理者」グループを作成する。「セキュア・グループ管理者」グループにおいて識別された管理者だけが、そのセキュア・グループにノードを追加したり、そこからノードを除去したりすることを許可されている。「セキュア・グループ管理者」アカウントが作成され、ユーザ１５８は、適正な（空白ではない）パスワードを入力するよう求められる（「セキュア・グループ管理者」は、グループ名の例である（後述されるように、本発明の実施形態は、パスワードの代替として、またはパスワードとともに用いられることが可能な個人識別番号（ＰＩＮ）をサポートする）。この実施形態は、他のグループ名も同様にサポートする）。ユーザがパスワードを入力すると、「セキュア・グループ管理者」グループに「セキュア・グループ管理者」アカウントが追加される。
【００３２】
一方、ユーザ１５８が、コンピュータ１０２によって検出された既存の非管理セキュア・ワークグループに参加することを選択した場合は（ステップ１７８）、そのグループの、ＳＳＤＰ要求に応答したノードのうちの１つが選択され、その選択されたノードのセキュア・グループ・サービスのリモート・プロシージャ・コール（ＲＰＣ）インターフェースとの接続が確立される。図２に示された例では、コンピュータ１０２が、コンピュータ９６と通信することを選択している。これを受けて、コンピュータ９６は、コンピュータ１０２に対し、自身を認証するよう、要求を出す。コンピュータ１０２は、自身を適正に認証することによって、コンピュータ９６からの信頼を確立する（ステップ１８２）。そうすることで、コンピュータ１０２は、そのグループ１００の残りのノードからの信頼も確立する。これは、残りのノードが、コンピュータ９６を信頼していて、コンピュータ９６が信頼するコンピュータであれば信頼することになっているためである。これに対し、代替実施形態では、非管理セキュア・ワークグループに参加しようとするコンピュータは、そのグループ内の各コンピュータからの信頼を個別に確立しなければならない可能性がある。
【００３３】
前述のように、信頼を確立する一般的な方法は、コンピュータが、他方のコンピュータに対して、他方のコンピュータが知っている秘密を提示することである。本発明の実施形態では、ピア間の相互認証のための自己署名証明書を利用する。ターゲット・ノードの証明書を、認証された、参加する側のコンピュータに戻すことが可能である。本発明の例示的実施形態では、秘密は、ターゲット・ノード・コンピュータ９６の「セキュア・グループ管理者」グループに登録されているグループ管理者の名前およびパスワードである。コンピュータ１０２は、ターゲット・ノード・コンピュータ９６からの質問に対して、ユーザ１５８に、有効な管理者名およびパスワードを入力するよう求める。一例示的実装では、（図２で「Ｔｏｂｙ」として示されている）管理者１９６は、単純に、非管理セキュア・ワークグループに参加しようとしているコンピュータ１０２まで歩いていって、自分のユーザ名およびパスワードを入力することが可能である。コンピュータ１０２は、入力された管理者名およびパスワードをターゲット・ノード・コンピュータ９６に送信する。ターゲット・ノード・コンピュータ９６は、コンピュータ１０２から返された管理者名およびパスワードを検査する。それらが有効であって、「セキュア・グループ管理者」グループにある管理者アカウントと一致すれば、コンピュータ１０２は、非管理セキュア・ワークグループ１００のメンバになる。ターゲット・ノード・コンピュータ９６は、参加する側のコンピュータ１０２のコンピュータ・アカウントを作成し、ターゲット・ノード・コンピュータの秘密を、参加する側のコンピュータ１０２に回す。次に、参加する側のコンピュータ１０２は、ターゲット・ノード・コンピュータの秘密を保存する。この時点で、参加する側のコンピュータ１０２は、ターゲット・ノード・コンピュータ９６との「同期」動作を開始する。同期動作が完了すると、完全な信頼が確立される。
【００３４】
その後は、非管理セキュア・ワークグループのメンバ間でユーザ・アカウントおよびユーザ・プロファイルの変更があると、それらが複製される（ステップ１８８）。一例示的実装では、非管理セキュア・ワークグループのメンバであるコンピュータが定期的に（たとえば、４分ごとに）グループ内の他のすべてのノードに「Ｈｅｌｌｏ」メッセージを送信する。Ｈｅｌｌｏメッセージは、グループＧＵＩＤ、ノードの現在のシステム時刻、および複製の最終更新カウントを含む。その他のグループ・メンバは、応答する必要はないが、各自のグループ・メンバのテーブルを適宜更新し、上記のメンバから「Ｈｅｌｌｏ」を受け取った最終時刻を記録する。ＬＳＡからＳＡＭ変更を受け取った場合、そのコンピュータ上のセキュア・グループ・サービスは、セキュア・ワークグループ内のすべてのノードに「Ｎｏｔｉｆｙ」メッセージを送信する。グループ・ノードがＮｏｔｉｆｙメッセージを受け取ると、グループ・ノードは、メッセージの中のＵｐｄａｔｅＣｏｕｎｔと、自身の現在のＵｐｄａｔｅＣｏｕｎｔとを比較する。受け取ったＵｐｄａｔｅＣｏｕｎｔが現在のＵｐｄａｔｅＣｏｕｎｔより新しい場合、受信者は、送信者にコールバックして変更の具体的なリストを求め、それらの変更をローカルに適用する。
【００３５】
代替の例示的実施形態では、ターゲット・ノード・コンピュータ９６は、管理者名およびパスワードを秘密として使用する代わりに、ランダムな個人識別番号（ＰＩＮ）を秘密として生成する。ターゲット・ノード・コンピュータ９６のユーザ１９６（「Ｔｏｂｙ」）は、グループに参加しようとしているコンピュータ１０２のユーザ１５８（「Ｐａｔｒｉｃｋ」）に秘密ＰＩＮを与える。次に、ユーザ１５８は、そのＰＩＮを、求めに応じてコンピュータ１０２に入力し、そのＰＩＮが、ネットワーク接続を介してターゲット・ノード９６に配信されて、信頼が確立される。
【００３６】
図６は、本発明の実施形態による、コンピュータ・システム（ＫｉｔｃｈｅｎＰＣ）６０１が非管理セキュア・ワークグループ６０３に参加する例示的シナリオを示す（本発明の他の実施形態は、他の手法を利用して、非管理セキュア・ワークグループ６０３に参加しようとするマシンの認証を与えることが可能である）。この例示的シナリオでは、コンピュータ・システム（ＤｅｎＰＣ）６０５が、既に非管理セキュア・ワークグループ６０３のメンバである。参加は、まだ参加していないマシンが既存の非管理セキュア・ワークグループのメンバと連係して、その非管理セキュア・ワークグループにおいてメンバシップを取得するためのプロセスである。この例示的実装には、以下の１０個の主要ステップがある。  
１）ＫｉｔｃｈｅｎＰＣ  ６０１が、ＨｏｕｓｅＣａｓｔｌｅ＿Ｋpublicを用いてＤｅｎＰＣ  ６０５に問いかけることにより、ＤｅｎＰＣ  ６０５を非管理セキュア・ワークグループ６０３のメンバとして認証する。ＤｅｎＰＣ  ６０５が正しく応答すれば、ＤｅｎＰＣ  ６０５は、共有秘密を知っていたことになる。  
２）ＫｉｔｃｈｅｎＰＣ  ６０１が公開鍵／非公開鍵のペアを生成し、自己署名証明書ＫｉｔｃｈｅｎＰＣ＿Ｃｅｒｔを生成する。  
３）ＫｉｔｃｈｅｎＰＣ  ６０１が、自身のためにＫｉｔｃｈｅｎＰＣアカウントを作成し、ＫｉｔｃｈｅｎＰＣ＿Ｃｅｒｔをそのアカウントに関連付ける。  
４）ＫｉｔｃｈｅｎＰＣ  ６０１が、参加を駆動するユーザによって与えられた、管理者の、よく知られているアカウントと、管理者のパスワードとを用いて、ＤｅｎＰＣ  ６０５にログインする。ＫｉｔｃｈｅｎＰＣ  ６０１は、自身の証明書をＤｅｎＰＣ  ６０５に渡す。  
５）ＤｅｎＰＣ  ６０５は、ＫｉｔｃｈｅｎＰＣの証明書をインストールする。  
６）ＤｅｎＰＣ  ６０５が、ＫｉｔｃｈｅｎＰＣ  ６０１のマシン・アカウントを作成し、そのアカウントをＫｉｔｃｈｅｎＰＣ＿Ｃｅｒｔに関連付け、その証明書を非管理セキュア・ワークグループ６０３に入力する。  
７）ＤｅｎＰＣ（６０３）が、自身の証明書と共有秘密とをＫｉｔｃｈｅｎＰＣ（６０１）に返し、ＫｉｔｃｈｅｎＰＣ（６０１）は、  
ａ．ＤｅｎＰＣ＿Ｃｅｒｔをインストールし、  
ｂ．共有秘密を格納し、  
ｃ．非公開鍵からＨｏｕｓｅＣａｓｔｌｅ＿Ｃｅｒｔのコピーを生成し、そのコピーをインストールする。  
８）ＫｉｔｃｈｅｎＰＣ（６０１）が、ＤｅｎＰＣ  ６０５のマシン・アカウントを作成し、そのアカウントをＤｅｎＰＣ＿Ｃｅｒｔに関連付ける。  
９）ＫｉｔｃｈｅｎＰＣ  ６０１が、機能探索（Function Discovery）６０７により、自身を非管理セキュア・ワークグループのメンバとしてパブリッシュ（ブロードキャスト）する。  
１０）ＫｉｔｃｈｅｎＰＣ  ６０１が、ＤｅｎＰＣ  ６０５との同期動作を開始する（ここまでのステップでは、ＫｉｔｃｈｅｎＰＣ  ６０１とＤｅｎＰＣ  ６０５は、相互の信頼を確立しているに過ぎない。それらが互いを信頼した後、同期動作により、各コンピュータに、他のコンピュータからの証明書、アカウント、およびグループの完全セットが与えられる）。
【００３７】
信頼を確立するフェーズの間の通信、ならびに、その後の、ユーザ・アカウント、ユーザ・プロファイル、およびその他の、グループの動作に関連するデータを複製するための、グループ・メンバ間の通信は、データの完全性および機密性を保護するために、デジタル署名および暗号化によって適切に保護されなければならないことを理解されたい（本発明の実施形態では、公開鍵／非公開鍵ベースの認証メカニズム（ＰＫ／ＳＣｈａｎｎｅｌ認証）を用いる。公開鍵は、自己署名証明書内に置かれ、この自己署名証明書は、後で非公開鍵の保有者の識別情報を検証するために使用される）。そのために、適切な認証プロトコル（ＮＴＬＭやケルベロスなど）の後に通信を行うことが可能である。一例示的実装では、非管理セキュア・ワークグループのノードは、ＮＴＬＭ認証メカニズムを採用する（ＤＣＥ）ＲＰＣを用いて複製を行う。チャネルは、呼レベルの認証およびプライバシで保護され、アクセス制御は、非管理セキュア・ワークグループのメンバである発呼者に対するサーバベースのチェックに基づく。認証処置を行うことは、ローカル・ネットワーク上の他のコンピュータが、非管理セキュア・ワークグループのノード間の通信を盗聴したり、改ざんしたりすることの防止になる。
【００３８】
コンピュータ１０２は、非管理セキュア・ワークグループ１００に参加した後、自発的にグループを離脱することが可能である。そうするためには、ユーザ１５８は、非管理セキュア・ワークグループから除去されるべきマシン１０２にログオンし、適切なユーザ・インターフェース・ウィンドウから、グループを離脱することを選択する。一例示的実装では、あるコンピュータが非管理セキュア・ワークグループから離脱すると、そのコンピュータは、「セキュア・グループ・ノード」グループから除去され、それに対応するコンピュータ・アカウントが削除される。この操作により、アカウントを複製する際に用いられた信頼が失われる。そのコンピュータがグループを離脱することに伴い、その「セキュア・グループ管理者」グループおよび「セキュア・グループ・ノード」グループが、すべてのコンピュータ・アカウントとともに削除される。ただし、コンピュータＧＵＩＤは、グループに参加していた間と同じまま残る。コンピュータ１０２は、グループから除去された後、ローカル・ネットワーク上でスタンドアロン・コンピュータになり、それによって、ワークグループ１００は、１つのコンピュータからなる非管理セキュア・ワークグループになる（しかしながら、１つのコンピュータからなる非管理セキュア・ワークグループになった後のワークグループ１００に、後からコンピュータが参加することは可能である）。コンピュータ１０２は、もはや信頼されず、ユーザ・アカウントおよびユーザ・プロファイルについてのその後のいかなる更新も受け取らない。
【００３９】
ある特殊な状況では、コンピュータが非管理セキュア・ワークグループから「追放される」場合がある。たとえば、グループ内のあるコンピュータが盗まれた場合は、後で何者かがそのコンピュータを使用してグループのデータやリソースにアクセスするのを防ぐために、そのコンピュータをグループから追放することが必要になることがある。追放されたコンピュータは、「セキュア・グループ・ノード」グループから除去され、グループ内のそのアカウントは削除される。これにより、今後、追放されたコンピュータに対しては、アカウント情報の複製が行われなくなる。それだけにとどまらず、追放されたコンピュータをグループから完全に切り離すために、他の処置が行われる場合がある。追放されたコンピュータは、（パスワードを含む）アカウント・データベースの完全コピーを有しているので、追放されたコンピュータは、他の何らかのユーザ（またはコンピュータ）として自身を認証して、引き続きセキュア・ワークグループのアクセス権を取得しようと試みることが可能である。そこで、追放されたコンピュータが通信を盗聴してパスワードを見ることができないようにして残りの秘密を変更できるような処置を講じなければならない。追放プロセスの一環として、どのユーザ秘密を変更する場合も、その前にそのコンピュータの秘密をオフラインに切り替えなければならないようにすることが可能である。コンピュータの秘密をそのように切り替えることは、非公開チャネル上で「通信外」で（たとえば、フロッピー（登録商標）ディスクで秘密を運ぶことにより）なされることが可能である。一実装では、非管理セキュア・ワークグループの管理者１９６は、コンピュータを追放した後に、追放されたコンピュータがないグループを再作成しなければならない。この回復プロセスの一環として、グループに残っている１つのコンピュータ（「回復コンピュータ」）が隔離され（すなわち、ネットワークから除去され）、グループ回復を行うために使用される。新しいランダムＬＳＡ秘密が、グループに残っている各コンピュータについて生成され、そのコンピュータのための新しいコンピュータ・パスワードとして、回復コンピュータのローカル・アカウント・データベースに格納される。しかしながら、ネットワーク経由では、この新しい秘密をその他のコンピュータに送信することができない。追放されるべきマシンがその更新を受け取るおそれがあるためである。この問題に対処するために、管理者１９６は、セキュア・ワークグループに残っている各コンピュータについて、そのコンピュータのための新しいＬＳＡ秘密を収容する「追放」フロッピー（登録商標）ディスク（または他の任意の可搬媒体（ＣＤ−ＲＯＭなど））を作成する。管理者は、非管理セキュア・ワークグループの中にとどめておきたい各コンピュータに自分の管理者アカウントでログオンし、そのコンピュータ上で追放ディスクを実行して、そのコンピュータのパスワードを変更する。グループに残っているマシンで追放ディスクが実行された後は、すべてのユーザが、そのグループのコンピュータにログオンする際にパスワードを変更することが必要である。これは、追放されたコンピュータがユーザの既存のパスワードのすべて（または少なくとも派生鍵（derived keys））を有しているためである。
【００４０】
本発明の少なくともいくつかの態様による非管理セキュア・ワークグループの一利点は、マシン対マシン通信をセキュアにすることである。本発明の一態様によれば、メンバ・マシンと、非管理セキュア・ワークグループへの参加を要求するマシンとの間に、自己署名証明書を使用することが可能である。また、前述の追放フロッピー（登録商標）ディスクの作成を、すべてのマシン・アカウントが基本的に同時に新しいランダム・パスワードにリセットされるように、分散することが可能である。メンバ・マシンは、パスワードがリセットされると通信機能を失うが、追放フロッピー（登録商標）ディスクが一巡すれば、通信機能を獲得する。追放フロッピー（登録商標）ディスクを取得しないマシン（たとえば、追放されたマシン）は、古いパスワードだけを保有するため、非管理セキュア・ワークグループと通信することができない。本発明の少なくともいくつかの態様による非管理セキュア・ワークグループの別の利点は、ユーザ・アカウントによる不正アクセスを防ぐことである。本発明の一態様によれば、すべてのユーザ・アカウントが変更される。本発明の別の態様によれば、次のログインで有効期限が切れるようにパスワードを設定することが可能である。
【００４１】
本発明の少なくともいくつかの態様による非管理セキュア・ワークグループの一利点は、各ユーザが、グループ内のすべてのコンピュータに知られている識別情報を有することである。結果として、ユーザは、同じユーザ名およびパスワードで、セキュア・ワークグループ内のどのコンピュータにでもログオンすることが可能である。たとえば、小規模事業所設定では、従業員が、セキュア・ワークグループを形成するローカル・オフィス・ネットワーク上の任意のコンピュータに、同じユーザ名およびパスワードでログオンすることが可能であり、各コンピュータに対して別々にユーザ・アカウントをセットアップすることは不要である。さらに、ユーザがグループ内のコンピュータの１つにおいてパスワードを変更すると、その変更がその他のコンピュータにも複製される。したがって、非管理セキュア・ワークグループは、ユーザ・アカウントの作成および変更を大幅に簡略化し、グループ内のコンピュータを、正規ユーザにとって一段と「アクセスしやすい」ものにすることが可能である。
【００４２】
非管理セキュア・ワークグループにおけるコンピュータの改良されたネットワーク・インテグレーションはまた、ユーザがコンピュータ・ネットワーキングの恩恵を享受することを可能にする。ユーザは、グループ内のコンピュータのいずれかにログインした後、そのユーザの文書およびユーザ自身の設定が実際に格納されている場所がどこであろうと、ユーザ自身の設定を用いて、そのユーザの文書のすべてにアクセスすることが可能である。これが可能になるのは、やはり、ユーザのすべての文書が、すべてのコンピュータで認識されている単一のユーザ識別情報に関連付けられているためである。したがって、所与のユーザのすべての文書および設定を識別するクエリを作成することが可能である。これは、ユーザが、セキュア・ワークグループ全体において、そのユーザのすべての文書および設定の「統一された」ビューを有することを可能にする。
【００４３】
前述のように、セキュア・ワークグループ内のコンピュータ間で複製されたユーザ・プロファイルは、それらのユーザの文書を含むことが可能である。一例示的実施形態では、所与のユーザの、あらかじめ選択された文書セット（たとえば、そのユーザの「ＭｙＤｏｃｕｍｅｎｔｓ」フォルダにある文書）が、セキュア・ワークグループ内の各コンピュータに自動的に複製される。ユーザがそれらの文書のいずれかを修正すると、文書改訂が検出され、修正された文書が、ファイル複製サービス（ＦＲＳ）によって、グループ内のその他のコンピュータに複製される。本発明の例示的実施形態では、複製された文書を格納するためにコンピュータが使用するメモリ量を減らすために、しきい値サイズを超えるファイルは複製されない。その代わり、しきい値サイズを超えたファイルについては、そのファイルを格納しているコンピュータにおける、そのファイルへのリンクだけが、その他のコンピュータに複製される。
【００４４】
非管理セキュア・ワークグループはさらに、グループのユーザ間でのファイルのセキュア共有を可能にする。ユーザが自分の文書を第２のユーザと共有しようとする場合、ユーザは、その文書のプロパティを、第２のユーザがその文書へのアクセスを許可されていることを示すように修正できる。第２のユーザがアプリケーションを使用してその文書にアクセスしたときに、その文書のプロパティが調べられ、その文書のアクセス権が第２のユーザに与えられていることが確認される。一例示的実装では、小規模事業所ネットワークのセキュア・ワークグループのユーザが、他の１人のユーザとだけ文書を共有することが可能である。代替の例示的実施形態では、非管理セキュア・ワークグループのユーザが、そのユーザのファイルを、グループのすべてのユーザと共有することが可能である。この実装は、家庭内ネットワークの設定にも適用可能である。
【００４５】
非管理セキュア・ワークグループは、グループに参加していないコンピュータがグループに限定的にアクセスすることを許可することが可能である。たとえば、ユーザが職場からラップトップを持ち出し、ユーザの家庭内ネットワークに接続するものの、家庭内ネットワーク上のセキュア・ワークグループに参加することを選択しない場合がある。そのような場合は、非メンバ・コンピュータにゲスト・ステータスを与え、あらかじめ選択されたリソースセットへのアクセスを許可することが可能である。同様に、レガシーコンピュータ（すなわち、非管理セキュア・ワークグループに関連する動作のためのソフトウェアを有しないコンピュータ）が、従来のワークグループで用いていたのと同じ方法で、非管理セキュア・ワークグループのコンピュータとも通信することが可能である。
【００４６】
コンピュータ（マシン）が非管理セキュア・ワークグループの一部になった後、非管理セキュア・ワークグループの任意のメンバに関して変更が発生すると、メンバ・コンピュータ間でユーザ・アカウントおよびユーザ・グループが複製され、同期が行われる（変更としては、ユーザ・アカウント情報の修正や、ユーザ・アカウント情報の追加などが考えられる）。非管理セキュア・ワークグループに参加しているコンピュータは、マスタ・コンピュータが指定されていないピアである。非管理セキュア・ワークグループ内のコンピュータは、ネットワークを介して変更を宣伝することが可能である。この動作により、メンバ・コンピュータは、複製を開始し、これによって、互いに同期した状態を保つことが可能である。
【００４７】
複製に参加しているコンピュータは、それらのコンピュータが複製しようとするデータの状態を維持する。それらのコンピュータは、以下の項目を追跡する。
・コンピュータ・バージョン番号：この番号は、コンピュータ上のどのアカウントが変更されても更新される。このバージョン番号は、同期動作がいつ必要かを、ハイレベルで決定する。
・アカウント・バージョン番号：この番号は、コンピュータ上の特定のアカウントが変更されたときに更新される。このバージョン番号は、同期動作が必要になったときに、どのアカウントを同期させるべきかを決定するために使用され、アカウントごとに追跡される。
【００４８】
複製は、各コンピュータに変更があったときにそのコンピュータがコンピュータ・バージョン番号を宣伝するプル指向複製であってよい。非管理セキュア・ワークグループのメンバは、別のメンバが新しいバージョン番号を宣伝していることを検出した場合には、そのバージョン番号を、自身が保有している、当該コンピュータに関する記録の中のバージョン番号と照合する。メンバは、より新しいデータが別のコンピュータからパブリッシュされていると判断した場合には、複製を開始する。
【００４９】
例示的実施形態では、すべてのユーザ・アカウントが複製される。すべてのアカウント・グループが複製されるため、あるコンピュータで管理者であるユーザが、その他のコンピュータの管理者として複製される。複製されるのは、以下のデータである。  
＞ユーザ名  
＞ユーザ・パスワード  
＞ユーザ・タイル  
＞アカウント・バージョン番号：このデータは、メンバがそれぞれのローカル・データをいつ更新すべきかをメンバに通知するために、非管理セキュア・ワークグループによって使用される。  
＞ユーザ・グループ名  
＞ユーザ・グループ・メンバ・リスト  
＞コンピュータ・バージョン番号：このデータは、別のコンピュータとの同期動作を開始するかどうかを決定するために、非管理セキュア・ワークグループによって使用される。
＞非管理セキュア・ワークグループ秘密：このデータは、非管理セキュア・ワークグループのマシン間の信頼を確立するマシン対マシン秘密である。
【００５０】
図７は、本発明の例示的実施形態による、非管理セキュア・ワークグループ内のメンバ・コンピュータから別のコンピュータに、更新されたアカウント情報を提供することのフロー図７００を示す。ステップ７０１で、メンバ・コンピュータが、メンバ・コンピュータに格納されているアカウント情報に変更がないかどうかを調べる。変更がない場合、プロセスは終了する。変更がある場合、コンピュータは、ステップ７０３で、機能探索メッセージを使用して、関連付けられたコンピュータ・バージョン番号をパブリッシュすることによって、変更を宣伝する。本発明の実施形態は、他のパブリケーション・プロトコル（たとえば、前述のＳＳＤＰ）を使用して、関連付けられたコンピュータ・バージョン番号をパブリッシュすることも可能である。ステップ７０５で、メンバ・コンピュータは、ユーザ・アカウントのリストに関して、別のコンピュータから要求を受け取ったかどうかを調べる。受け取っていなければ、プロセスは終了する。受け取った場合、メンバ・コンピュータは、ステップ７０７で、そのリストを他方のコンピュータに送る。他方のコンピュータは、メンバ・コンピュータにおいて、対応するアカウント情報が更新または追加されている場合には、具体的なアカウント情報をさらに要求することが可能である。ステップ７０９で、そのような要求を受け取ったかどうかを調べる。さらなる要求を受け取っていない場合、プロセスは終了する。さらなる要求を受け取った場合、メンバ・コンピュータは、ステップ７１１で、指定されたアカウント情報を他方のコンピュータに送る。
【００５１】
図８は、本発明の例示的実施形態による、非管理セキュア・ワークグループ内のメンバ・コンピュータから、更新されたアカウント情報を取得することのフロー図８００を示す（フロー図８００は、図７に示された、他方のコンピュータで実行されるプロセスに対応する）。ステップ８０１で、他方のコンピュータは、メンバ・コンピュータがアカウント情報を変更したことの宣伝を受け取ったかどうかを調べる。受け取っていなければ、プロセスは終了する。宣伝を受け取った場合は、ステップ８０３で、他方のコンピュータが、宣伝されたバージョン番号と、保有している、メンバ・コンピュータに関する記録の中のバージョンと比較する。受け取っていなければ、プロセスは終了する。宣伝されたバージョンがより新しい場合、他方のコンピュータは、ステップ８０５で、ユーザ・アカウントのリストをメンバ・コンピュータに要求する。ステップ８０７で、他方のコンピュータは、更新されているアカウント情報または新しいアカウント情報を要求する。ステップ８０９で、他方のコンピュータは、（後述されるように）コンフリクトを解決した後、格納しているアカウント情報を更新する。
【００５２】
フロー図７００に従えば、更新されたアカウント情報を取得することが可能であるが、本発明の実施形態は、他のアカウント更新プロセスもサポートする。本発明の実施形態によれば、第１のメンバ・コンピュータが、アカウント情報に変更が生じたことを伝えるために、更新されたバージョン番号を含む宣伝をブロードキャストする。この非管理セキュア・ワークグループの第２のメンバが、第１のメンバ・コンピュータからの宣伝に対して、アカウント・バージョン情報を第１のメンバ・コンピュータに送る。その結果として、第１のメンバ・コンピュータは、より新しいユーザ・アカウントのリストを第２のメンバ・コンピュータに返す。
【００５３】
新しいコンピュータが非管理セキュア・ワークグループに参加する際には、そのコンピュータは、非管理セキュア・ワークグループに関連するアカウント・データを有していない。その時点で、そのコンピュータは、自身を、非管理セキュア・ワークグループ・データで更新する。非管理セキュア・ワークグループの参加メンバのいずれかにおいてユーザ・アカウントまたはグループの変更があった場合、その変更は、機能探索（または別のパブリッシュ・メカニズム（たとえば、ＳＳＤＰ））により、宣伝されることが可能である。宣伝は、非管理セキュア・ワークグループのメンバ間の複製シーケンスをトリガする。非管理セキュア・ワークグループ内のコンピュータは、機能探索を介してそれぞれのコンピュータ・バージョン番号をパブリッシュすることにより、それぞれの変更を他のコンピュータに宣伝する。
【００５４】
非管理セキュア・ワークグループから離脱するメンバがある場合、ユーザは、そのコンピュータから特定のアカウントを削除することを決定することが可能である。この変更は、非管理セキュア・ワークグループのメンバシップの更新と同様に、残りのメンバに複製されることが可能である。メンバが追放されると、非管理セキュア・ワークグループの秘密が変更される。秘密の変更は、非管理セキュア・ワークグループの他のメンバに伝達される。
【００５５】
マシンが最初に非管理セキュア・ワークグループに参加する際には、パスワードによる管理者のログオンによって、マシン間の初期信頼が確立される。信頼が確立されると、それらのマシンは、自己署名証明書を交換することが可能になり、証明書ベースの相互認証によって認証が実施される（前述のように、他の認証メカニズムを用いることも可能である）。コンピュータが別のコンピュータを認証すると、今度はそのコンピュータがアカウント情報を複製することが可能になる。
【００５６】
本発明の例示的実施形態によれば、セキュリティ・アカウント・マネージャ（ＳＡＭ）データベースは、新しいプロパティを補助プロパティ（auxiliary property）ファイルに格納することによって拡張される（セキュリティ・アカウント・マネージャ・データベースは、定義されたユーザおよびグループを、対応するパスワードおよび他の属性とともに収容する）。（ローカルに格納されているデータに対応する）補助プロパティ・ファイルは、アカウントが複製されたときに複製される。さらに、補助プロパティ・ファイルは、追加プロパティ（たとえば、ユーザ・タイル、パスワード・ヒント、アカウントＧＵＩＤ、およびアカウント証明書）を含むように拡張されることが可能である。
【００５７】
非管理セキュア・ワークグループは、互いにピアである複数のマシンを含む。これは、適切な権限を有する人物が、参加しているマシンのいずれに対しても、同じオブジェクトの変更を行うことが可能であることを意味する。変更は、メンバ・マシンが「オンライン」のときでも、「オフライン」のときでも、行うことが可能である。マシンがオフラインであるときにマシンに対して行われた変更は、後で詳述されるように、ユーザ・アカウントまたはアカウント・グループとのコンフリクトを起こす変更になる可能性がある。非管理セキュア・ワークグループの機能は、コンフリクトを検出するメカニズムを利用できる。その後、コンフリクトは、自動的に解決されるか、正規ユーザの助けによって解決されることが可能である。
【００５８】
アカウントの「変更」は、そのアカウントのいずれかのプロパティの変更として定義される。コンフリクトの解決および検出は、「アカウント全体のレベル」で実施されることが可能である（さらに、コンフリクトの解決および検出は、プロパティごとのレベルで実施されることが可能である）。たとえば、あるアカウントの、１つのマシンにあるタイルを変更し、別のマシンにある同じアカウントのパスワードを変更したとすると、両方のアカウントが変更されたと見なされ、したがって、コンフリクトの解決が必要になる。これは、プロパティ・レベルで変更が重なっていない場合でもそうである。
【００５９】
２つのメンバ・マシン間の同期は、それらのマシンの同期が外れていた継続時間の長さの影響を受ける。それらのマシンが離れていた継続時間が長い場合、それらのマシン間の差は、コンフリクトと見なされる。例示的実施形態では、その差は、管理ユーザインターフェース（ＵＩ）を用いた手動介入によって解決される。長い継続時間の例は、マシン間の最終更新タイム・スタンプ差が少なくとも３０日である場合であり、短い継続時間の例は、マシン間の「最終更新」タイム・スタンプが３０日未満であるときの、２つのメンバ・マシンの間の切断である。この例示的な３０日のしきい値は、最も標準的なオフラインシナリオ（たとえば、毎日シャットダウンされるマシン）がコンフリクト解決のために自動的に運用されることが可能であるように設定されている。ユーザ・アカウントおよびグループはあまり頻繁には変更されない可能性があるため、上記の基準は、コンピュータがバックアップから回復したときに同期をどのように行うかを決定することにも使用される。
【００６０】
長い継続時間の同期が行われるのは、マシン同士が、前述の長い継続時間のような非常に長い時間の間、離れていて、それらのマシン間に変更が発生した場合である。同期ブロッキング・エラー（synchronization blocking error）が、古い方のマシンのシンク・ハンドラ（Sync Handler）にポストされる。アカウントが非管理セキュア・ワークグループの残りのマシンとコンフリクトしていない、古い方のマシンにいるユーザらは、そのマシンを普通に使用することが可能である。本発明の例示的実施形態では、同期ブロッキング・エラーにより、そのマシンの管理者は、以下の選択肢を提供することによって、同期を解決することが可能である。
・古い方のマシンからすべての変更を廃棄し、最新の変更を選択する。この選択肢は、古い方のマシンがその非管理セキュア・ワークグループに初めて参加することと等価である。
・変更を、古い方のマシンから同期させる。本発明の実施形態では、ユーザがこの選択肢を選択した場合、マシン間の同期は、それらのマシンが短い継続時間だけ離れていたかのように行われる。本発明の他の実施形態では、すべてのコンフリクトが継続時間の短いコンフリクトとして扱われるため、コンフリクトの継続時間が長いか短いかによる違いがない。
【００６１】
短い継続時間の同期は、マシン間で最後に変更が行われてから、それらのマシンが短い継続時間だけ離れていた場合に行われる。短い継続時間の同期の扱い方は、同期対象の変更の性質によって異なる。本発明の例示的実施形態は、以下の変更を、対応する解決策とともにサポートする。  
・コンフリクトがない変更：  
＞１つのマシンにおいてアカウントを追加する：他方のマシンにおいて同じアカウントを作成することによって解決される。  
＞１つのマシンにおいてユーザ・アカウントを削除する：他方のマシンにおいて同じアカウントを削除することによって解決される。マシンがメンバである場合は、古い方のマシンにあるアカウントを削除する時点で、そのマシンの管理者が、そのような削除の、残りのメンバに対する影響について注意される。  
＞１つのマシンにおいてアカウントのプロパティを変更する：他方のマシンにある同じアカウントの同じプロパティを変更することによって解決される。  
＞１つのマシンにおいてユーザ・グループを追加する：他方のマシンにおいて同じユーザ・グループを作成することによって解決される。  
＞１つのマシンにおいてユーザ・グループを削除する：他方のマシンにおいて同じユーザ・グループを削除することによって解決される。マシンがメンバである場合は、古い方のマシンにあるユーザ・グループを削除する時点で、そのマシンの管理者が、そのような削除の、残りのメンバに対する影響について注意される。  
＞１つのマシンにおいてユーザ・グループのメンバシップを変更する：他方のマシンにある同じグループのメンバシップを変更することによって解決される。  
＞２人のユーザの表示名をスワップする：他方のマシンにおいてそれらの名前をスワップすることにより、解決される。なお、これによって、マシン上で表示名が重複する可能性がある。しかしながら、ユーザ・アカウントはＧＵＩＤ（グローバル一意識別子）で識別されるので、この変更は、コンフリクトがない変更である。  
・コンフリクトがある変更：  
＞異なる２つのマシン上で同じユーザ・アカウントを変更する：同期ブロッキング・エラーをポストし、そのユーザまたは管理者がコンフリクトを解決するまで、そのユーザを、古い方のマシンで非管理セキュア・ワークグループに参加させないようにすることにより、解決される。
【００６２】
本発明の実施形態によれば、すべてのコンフリクトが一様に扱われる。コンフリクトの継続時間が長いか短いかによる違いはない。すべてのコンフリクトが、継続時間の短いコンフリクトとして扱われる。
【００６３】
本発明の実施形態によれば、新しいアカウントが、どのローカル・アカウントともＧＵＩＤが一致せず、同じ名前をローカル・アカウントとして有する場合には、コンフリクトが発生する。
【００６４】
非管理セキュア・ワークグループのアカウントのコンフリクトは、コンフリクト管理ユーザ・インターフェースを組み込むことにより、表示される。個々のユーザは、カレントマシンにいる場合には、ユーザのアカウントがコンフリクトしているときに、コンフリクトについての通知を受ける。どのメンバ・マシンの管理者も、その管理者がログインしているマシンから見えるとおりに、非管理セキュア・ワークグループ内のすべてのアカウント・コンフリクトが通知される。言い換えると、非管理セキュア・ワークグループ内の様々なマシンが、様々なマシンとコンフリクトしている様々なアカウントを有する場合、その見え方は、各マシンごとに異なる。
【００６５】
アカウント変更の結果としての選択がすべてのメンバ・マシンに複製されると、コンフリクトの解決は収束したと見なされる。個々のマシンにおいてアカウント・コンフリクトが解決されると、対応する変更が他のマシンにおいて複製される。解決されたコンフリクトの性質によっては、他のマシンにおけるいくつかの既存のコンフリクトが、カレントマシンにおけるコンフリクトが解決されたときに解決される可能性がある。
【００６６】
非管理セキュア・ワークグループは、複数のマシンの能力に依存して、ネットワーク経由の通信を行い、メンバ・マシンの変更に応じてそれらの状態を変更することが可能である。ネットワークおよび参加しているマシンは、いろいろなかたちで故障する可能性がある。したがって、メンバ・マシンおよび非管理セキュア・ワークグループが、全体として、エラーや故障を予測的に処理し、そのようなエラーおよび故障からのクリーンアップおよび回復を行うことが可能であるように、非管理セキュア・ワークグループを機能させる必要がある。非管理セキュア・ワークグループは、アトミック・トランザクションを開始する前にマーカ・フラグを用いることによって、エラーおよび故障を大まかに処理することが可能である。何らかの原因でトランザクションが失敗した場合は、フラグが注目され、次にサービスが開始されたときにクリーンアップが行われる。複製操作は、マシンが利用可能になった時点で自動的に再開されるように設計されるため、複製中の故障は自動的に処理される。マシンの機能インストールが何らかのかたちで破損した場合は、そのマシンにおいてサービスが停止し、そのマシンは、非管理セキュア・ワークグループに参加しなくなる。
【００６７】
本発明の態様によれば、非管理セキュア・ワークグループは、様々なユーザ・シナリオをサポートする。たとえば、一ユーザ・シナリオは、家庭内ネットワークに「ローミング・ペアレンタル・コントロール」を導入する。親は、子供のコンピュータの使い方を制限するペアレンタル・コントロール制限を作成することが可能である。ペアレンタル・コントロール制限は、グループ内のすべてのコンピュータに複製される。したがって、子供がグループ内のいずれかのコンピュータにログオンすると、子供がどのコンピュータを使用しているかに関係なく、ペアレンタル・コントロール制限が子供に「追従」する。さらに、グループ内の各コンピュータにおける子供のすべての行動によって、子供の監査報告が更新される。本発明の例示的実施形態によれば、ユーザ・シナリオは、種々の機能の中でも特に、非管理セキュア・ワークグループ内のユーザに対する、ローミング、データ・オブジェクトの共有、ならびにデータ・オブジェクトのバックアップの機能をサポートする。これらのユーザ・シナリオは、非管理セキュア・ワークグループにおける信頼およびユーザ・データ複製を前提として成り立つ。
【００６８】
本発明の例示的実施形態は、非管理セキュア・ワークグループのプロパティおよびメンバをクエリしたり、非管理セキュア・ワークグループ内で操作を開始したりするために、アプリケーションまたは他のサービスによって使用されることが可能なインターフェースのセット（アプリケーション・プログラミング・インターフェース（ＡＰＩ））を提供する。
【００６９】
本発明の例示的実施形態は、以下のインターフェースをサポートする。  
・ＩＷｏｒｋｇｒｏｕｐＮｅｔＩｎｆｏｒｍａｔｉｏｎ：ローカル・エリア・ネットワーク内の非管理セキュア・ワークグループおよびメンバになっていないコンピュータのリストを提供する。  
・ＩＷｏｒｋｇｒｏｕｐＩｎｆｏｒｍａｔｉｏｎ：全体としての機能の属性を含む、所与の非管理セキュア・ワークグループに関する情報と、メンバ・コンピュータのリストとを提供する。  
・ＩＷｏｒｋｇｒｏｕｐＣｏｍｐｕｔｅｒＩｎｆｏｒｍａｔｉｏｎ：非管理セキュア・ワークグループ内のコンピュータに関する情報を提供する。  
・ＩＷｏｒｋｇｒｏｕｐＮｅｔＣｏｎｔｒｏｌ：新しい非管理セキュア・ワークグループを作成することを許可する。  
・ＩＷｏｒｋｇｒｏｕｐＣｏｎｔｒｏｌ：非管理セキュア・ワークグループにコンピュータを参加させたり、非管理セキュア・ワークグループからコンピュータを離脱させたりすることを許可する。
【００７０】
ＩＷｏｒｋｇｒｏｕｐＮｅｔＩｎｆｏｒｍａｔｉｏｎインターフェースは、非管理セキュア・ワークグループに関する情報を提供する。  
interface IWorkgroupNetlnformation : IUnknown  
{  
//  
// 既知のワークグループに対してenumeratorを作成する。  
//   
HRESULT GetWorkgroups([out] IEnum Workgroups** ppEnum);  
//  
// ネームで既知のワークグループに対してそのインターフェースを提供する.  
// コンピュータがワークグループに現在属して合、pszWorkgroupは、  
// 現在のワークグループを示す空のストリングとすることができる。  
//  
// pszWorkgroupGUID が空のストリングであり、現在のコンピュータが、  
// ワークグループのメンバでない場合、GetWorkgroupが  
// S_FALSEを戻し、*pp Workgroup をヌルにセットする。  
//  
HRESULT GetWorkgroup([in,string] LPCWSTR pszWorkgroupGUID,  
[out] IWorkgroupInformation** pp Workgroup);  
//  
// 既知のメンバになっていないコンピュータに対してenumeratorを生成する。  
//  
HRESULT GetComputers([out] IEnumString** ppEnum);  
//  
// 変更通知の登録。  
//  
HRESULT Advise([in] IUnknown* pUnk, [out] DWORD* pdwCookie);  
HRESULT Unadvise(DWORD dwCookie);  
}
【００７１】
ＩＥｎｕｍＷｏｒｋｇｒｏｕｐｓおよびＩＥｎｕｍＣｏｍｐｕｔｅｒｓは、いずれもＩＥｎｕｍｅｒａｂｌｅから派生したものである。ＩＥｎｕｍＷｏｒｋｇｒｏｕｐｓは、ＩＷｏｒｋｇｒｏｕｐＩｎｆｏｒｍａｔｉｏｎインターフェースを返し、これらのそれぞれは、既知の非管理セキュア・ワークグループを表す。ＩＥｎｕｍＣｏｍｐｕｔｅｒｓは、ＬＰＷＳＴＲを返し、これらのそれぞれは、どの非管理セキュア・ワークグループのメンバにもなっていない既知のコンピュータの名前である。  
interface IEnumWorkgroups : IUnknown  
{   
HRESULT Next([in] ULONG celt,  
[out, size_is(celt),  
length_is(*pceltFetched)] IWorkgroupInformation** rgelt,  
[out] ULONG* pceltFetched);  
HRESULT Skip([in] ULONG celt);  
HRESULT Reset();  
HRESULT Clone([out] IEnumWorkgroups** ppEnum Workgroups);  
}  
interface IEnumComputers : IUnknown  
{  
HRESULT Next([in] ULONG celt,  
[out, size_is(celt),  
length_is(*pceltFetched)] IWorkgroupComputerlnformation** rgelt,  
[out] ULONG* pceltFetched);  
HRESULT Skip([in] ULONG celt);  
HRESULT Reset();  
HRESULT Clone([out] IEnumComputers** ppEnumComputers);  
}
【００７２】
変更通知に関しては、ＩＷｏｒｋｇｒｏｕｐＮｅｔＩｎｆｏｒｍａｔｉｏｎ：：Ａｄｖｉｓｅは、ＩＷｏｒｋｇｒｏｕｐＮｅｔＩｎｆｏｒｍａｔｉｏｎＡｄｖｉｓｅを受け入れる。  
interface IWorkgroupNetlnformationAdvise : IUnknown  
{  
//  
// ワークグループの発見に対する通知。  
//  
HRESULT OnWorkgroupFound([in] IWorkgroupInformation* pWI);  
HRESULT OnWorkgroupLost([in] IWorkgroupInformation* pWI);  
//  
// コンピュータの発見に対する通知。  
//  
HRESULT OnComputerFound([in, string] LPCWSTR pszComputer);  
HRESULT OnComputerLost([in, string] LPCWSTR pszComputer);  
}  
}
【００７３】
ＩＷｏｒｋｇｒｏｕｐＩｎｆｏｒｍａｔｉｏｎインターフェースは、全体としての非管理セキュア・ワークグループの属性を含む、所与の非管理セキュア・ワークグループに関する情報と、メンバ・コンピュータのリストとを提供する。  
interface IWorkgroupInformation : IUnknown  
{  
//  
// そのワークグループのプライマリーネームを獲得する。  
//  
// 戻されたネームストリングは、CoTaskMemFree()で解放されなければならない。  
//  
HRESULT GetName([out,string] LPWSTR* ppszName);  
//  
// そのワークグループに対して一意の識別子(GUID)を獲得する。  
//  
// その一意の識別子は、参照用に使用する、そのワークグループの  
// ライフタイム期間、変更されてなならない。  
//  
HRESULT GetGUID([out,string] LPWSTR* ppszGUID);  
//  
// そのワークグループが生成された時刻が獲得される。  
//  
HRESULT GetCreationTime([out] FILETIME* pft);  
//  
// そのワークグループ内のそのコンピュータに対するenumeratorを獲得する。  
//  
HRESULT GetComputers([out] IEnumComputers** ppEnum);  
//  
// 変更通知に対して登録する。  
//  
HRESULT Advise([in] IUnknown* pUnk, [out] DWORD* pdwCookie);  
HRESULT Unadvise(DWORD dwCookie);  
} 
【００７４】
変更通知に関しては、ＩＷｏｒｋｇｒｏｕｐＩｎｆｏｒｍａｔｉｏｎ：：Ａｄｖｉｓｅは、ＩＷｏｒｋｇｒｏｕｐＩｎｆｏｒｍａｔｉｏｎＡｄｖｉｓｅを受け入れる。  
interface IWorkgroupInformationAdvise : IUnknown  
{  
//  
// ワークグループのメンバーシップの変更の通知  
//  
// 注意: そのローカルコンピュータが属するそのワークグループ以外の  
// 任意のワークグループに対応するIWorkgroupInformationに対しては、  
// サポートされない。  
//  
HRESULT OnMemberAdded([in] IWorkgroupComputerlnformation* pComputer);  
HRESULT OnMemberRemoved([in] IWorkgroupComputerlnformation* pComputer);  
//  
// ワークグループのメンバの状態変更に対する通知。  
//  
HRESULT OnMemberStateChanged([in] IWorkgroupComputerlnformation* pComputer);  
}
【００７５】
ＩＷｏｒｋｇｒｏｕｐＣｏｍｐｕｔｅｒＩｎｆｏｒｍａｔｉｏｎは、非管理セキュア・ワークグループ内のコンピュータに関する情報を提供する。  
interface IWorkgroupComputerlnformation : IUnknown  
{  
//  
// そのコンピュータのネームを獲得する  
//  
// 戻されたネームストリングは、CoTaskMemFree()で解放されなければならない。  
//  
HRESULT GetName([out,string] LPWSTR* ppszName);  
//  
//そのコンピュータについての記述を獲得する。  
//  
// 戻されたネームは、CoTaskMemFree()でフリーにされなければならない。  
//  
HRESULT GetDescription([out,string] LPWSTR* ppszDescription);  
//  
// そのコンピュータがそのワークグループと同期化された最新時刻が獲得される。  
//  
//戻された値は、未知を意味する、ゼロとすることができる。  
//  
HRESULT GetLastSyncTime([out] FILETIME* pft);  
//  
// そのコンピュータ用の一意の識別子（GUID）を獲得する。  
//  
// その一意の識別子は、これを参照に使用する、そのワークグループ内の  
// コンピュータ・ライフタイム期間、変更されてはならない。  
//  
HRESULT GetUniqueID([out] GUID* pGUID);  
}  
}
【００７６】
ＩＷｏｒｋｇｒｏｕｐＮｅｔＣｏｎｔｒｏｌインターフェースは、ＱｕｅｒｙＩｎｔｅｒｆａｃｅ（ＱＩ）を介して、ＩＷｏｒｋｇｒｏｕｐＮｅｔＩｎｆｏｒｍａｔｉｏｎから取得される。  
interface IWorkgroupNetControl : IUnknown  
{  
//  
// 第１のメンバになる、現在メンバでないマシンを有する  
// 新しいワークグループを生成する。  
// たとえば、一つのworkgroup-of-oneを生成する。  
//  
HRESULT Create([in, string] LPCWSTR pszWorkgroupAdminPassword,   
[out] IWorkgroupInformation** pp Workgroup);  
//  
// その現在のワークグループからそのコンピュータを分離する。   
// 次ぎに、そのコンピュータは、分離された状態（unjoined state）に復帰する。  
//  
HRESULT Leave();  
}
【００７７】
ＩＷｏｒｋｇｒｏｕｐＣｏｎｔｒｏｌインターフェースは、ＱＩを介して、ＩＷｏｒｋｇｒｏｕｐＩｎｆｏｒｍａｔｉｏｎから取得される。  
interface IWorkgroupControl : IUnknown  
{  
//  
// そのコンピュータを指定されたワークグループに参加（join）する。  
//  
HRESULT Join([in,string] LPCWSTR pszAdminPassword);  
//  
// 指定されたコンピュータをそのワークグループから退去させる。  
//  
HRESULT Evict([in,string] LPCWSTR pszComputer);  
}
【００７８】
図９は、本発明の例示的実施形態による、非管理セキュア・ワークグループにおけるアプリケーション・プログラミング・インターフェース（ＡＰＩ）をサポートするフロー図９００を示す。アプリケーション（たとえば、図２に示されたようなアプリケーション１２１）がステップ９０１でＡＰＩ要求を生成すると、このＡＰＩ要求は、ステップ９０３で解析され、ＡＰＩタイプおよび対応するパラメータ（たとえば、非管理セキュア・ワークグループｉｄ）が決定される。その結果、ＡＰＩ要求メッセージは、ステップ９０５〜９１３に示されるような、サポートされているＡＰＩタイプに関して処理される。
【００７９】
アプリケーション・プログラミン・グインターフェース（あるいは、より簡単に、インターフェース）は、１つまたは複数のコード・セグメントが、他の１つまたは複数のコード・セグメントによって提供される機能と通信したり、その機能にアクセスしたりすることを可能にする、任意のメカニズム、プロセス、プロトコルと見なすことが可能である。代替として、プログラミング・インターフェースは、システムの他のコンポーネントの１つまたは複数のメカニズム、メソッド、関数呼び出し、モジュールなどと結合して情報を伝達することが可能な、システムのコンポーネントの１つまたは複数のメカニズム、メソッド、関数呼び出し、モジュール、オブジェクトなどと見なすことが可能である。上述の「コード・セグメント」という用語は、１つまたは複数の命令またはコード行を含むことを意図しており、たとえば、コード・モジュール、オブジェクト、サブルーチン、関数、その他を含み、適用される用語体系、あるいは、それらのコード・セグメントが別々にコンパイルされるかどうか、あるいは、それらのコード・セグメントが、ソースとして提供されるか、中間形態として提供されるか、オブジェクト・コードとして提供されるか、あるいは、それらのコード・セグメントが、ランタイム・システムまたはランタイム・プロセスで利用されるかどうか、あるいは、それらが、同じマシンに配置されるか、異なるマシンに配置されるか、複数のマシンに分散されるか、あるいは、コード・セグメントによって表される機能が、すべてソフトウェアで実装されるか、すべてハードウェアで実装されるか、ハードウェアとソフトウェアの組合せで実装されるか、などには無関係である。
【００８０】
概念的には、プログラミング・インターフェースは、包括的に、図１０Ａまたは１０Ｂで示されるように表されることが可能である。図１０Ａは、インターフェース１のインターフェースを、第１および第２のコード・セグメントが通信を行うための管として示したものである。図１０Ｂは、インターフェースを、インターフェース・オブジェクトＩ１およびＩ２（これらは第１および第２のコード・セグメントの一部であってもなくてもよい）を備えるものとして示しており、これらは、システムの第１および第２のコード・セグメントが媒体Ｍを介して通信することを可能にする。図１０Ｂについては、インターフェース・オブジェクトＩ１およびＩ２を同じシステムの別々のインターフェースと見なす見方があり、オブジェクトＩ１およびＩ２に媒体Ｍを加えたものがインターフェースを構成する、と見なす見方もある。図１０Ａおよび１０Ｂは、二方向の流れと、流れの各側のインターフェースとを示しているが、実装によっては、情報の流れが一方向でしかない場合（または、後述のように、情報の流れがない場合）、あるいは、インターフェース・オブジェクトが一方の側にしかない場合がある。限定ではなく、例として、アプリケーション・プログラミング・インターフェース（ＡＰＩ）、エントリ・ポイント、メソッド、関数、サブルーチン、リモート・プロシージャ・コール、コンポーネント・オブジェクト・モデル（ＣＯＭ）インターフェースなどの用語は、プログラミング・インターフェースの定義の中に包含される。
【００８１】
そのようなプログラミング・インターフェースの態様は、第１のコード・セグメントが第２のコード・セグメントに情報を送るためのメソッド（ここで、「情報」は、最も広い意味で用いられ、データ、コマンド、要求などを含む）、第２のコード・セグメントがその情報を受け取るためのメソッド、ならびに、その情報の構造、シーケンス、シンタックス、編成、スキーマ、タイミング、および内容を含むことが可能である。この点において、情報が、インターフェースで定義される様式で移送されている限り、土台となるトランスポート媒体自体（媒体が有線か、無線か、両者の組合せか、など）は、インターフェースの動作にとって重要ではない。状況によっては、情報が、従来の意味で一方向または両方向に渡されない場合がある。これは、第１のコード・セグメントが、第２のコード・セグメントによって実施される機能に単純にアクセスする場合のように、情報転送が別のメカニズム（たとえば、コード・セグメント間の情報の流れから切り離されたバッファやファイルなどに情報が置かれるメカニズム）によってなされたり、存在しなかったりする場合があるためである。これらの態様のいずれかまたはすべてが、（たとえば、コード・セグメントが疎結合構成のシステムの一部であるか、密結合構成のシステムの一部であるか、に応じて）所与の状況において重要である可能性があるため、このリストは、例示的かつ非限定的であると見なされなければならない。
【００８２】
このプログラミング・インターフェースの概念は、当業者には周知であり、先述の、本発明の詳細説明から明らかである。しかしながら、プログラミング・インターフェースの実装方法は他にもあり、明示的に除外されない限り、これらも、請求の範囲によって包含されるものとする。そのような他の方法は、図１０Ａおよび１０Ｂの簡略図で示されるより高度かつ複雑であるように見えるかもしれないが、それらで実施される同様な機能によって達成される全体的な結果は同じである。次に、プログラミング・インターフェースのいくつかの例示的な代替実施形態を簡単に説明する。
【００８３】
１つのコード・セグメントから別のコード・セグメントへの通信は、通信を複数の別々の通信に分割することによって、間接的に達成されることが可能である。これを、図１１Ａおよび１１Ｂに概略的に示す。図に示されるように、いくつかのインターフェースを、分割可能な機能セットとして示すことが可能である。したがって、図１０Ａおよび１０Ｂのインターフェース機能は、同じ結果を達成するために（ちょうど２４が２×２×３×２に因数分解されるように）要素に分解されることが可能である。したがって、図１１Ａに示されるように、インターフェース１のインターフェースで提供される機能を細分して、このインターフェースの通信を、同じ結果を達成する複数のインターフェースであるインターフェース１Ａ、インターフェース１Ｂ、インターフェース１Ｃなどに変換することが可能である。図１１Ｂに示されるように、インターフェースＩ１で提供される機能を、同じ結果を達成する複数のインターフェースＩ１ａ、Ｉ１ｂ、Ｉ１ｃなどに細分することが可能である。同様に、第１のコード・セグメントから情報を受け取る第２のコード・セグメントのインターフェースＩ２を、複数のインターフェースＩ２ａ、Ｉ２ｂ、Ｉ２ｃなどに要素分解することが可能である。要素分解においては、第１のコード・セグメントに含まれるインターフェースの数は、第２のコード・セグメントに含まれるインターフェースの数と一致しなくてもよい。図１１Ａおよび１１Ｂのいずれの場合も、インターフェース１およびインターフェースＩ１のインターフェースの機能的趣旨は、それぞれ、図１０Ａおよび１０Ｂの場合と同じままである。インターフェースの要素分解は、要素分解が認識困難になるように、結合的、可換的、および他の数学的プロパティの後に続いてもよい。たとえば、操作の順序は重要でなくてもよく、したがって、インターフェースによって実行される機能は、インターフェースに到達するよりずっと早く、コードまたはインターフェースの別の部分によって実行されてもよく、あるいは、システムの別のコンポーネントによって実行されてもよい。さらに、プログラミング分野の当業者であれば、同じ結果を達成する異なる関数呼び出しを作成する方法が様々にあることを理解されよう。
【００８４】
場合によっては、プログラミング・インターフェースの特定の態様（たとえば、パラメータ）を無視、追加、または再定義しながらも、意図した結果を達成することが可能である。これを、図１２Ａおよび１２Ｂに示す。たとえば、図Ａ１のインターフェース１のインターフェースは、関数呼び出しＳｑｕａｒｅ（ｉｎｐｕｔ，ｐｒｅｃｉｓｉｏｎ，ｏｕｔｐｕｔ）を含むものとする。この呼び出しは、３つのパラメータｉｎｐｕｔ、ｐｒｅｃｉｓｉｏｎ、およびｏｕｔｐｕｔを含み、第１のコード・セグメントから第２のコード・セグメントに発行される。真ん中のパラメータｐｒｅｃｉｓｉｏｎが所与のシナリオに無関係である場合は、図１２Ａに示されるように、無視するか、（この状況では）無意味の（ｍｅａｎｉｎｇｌｅｓｓ）パラメータに置き換えてもよい。また、無関係の補助（ａｄｄｉｔｉｏｎａｌ）パラメータを追加してもよい。いずれのイベントにおいても、入力（ｉｎｐｕｔ）が第２のコード・セグメントによって二乗された後に出力（ｏｕｔｐｕｔ）が返される限り、二乗（ｓｑｕａｒｅ）の機能は達成されることが可能である。ｐｒｅｃｉｓｉｏｎ（精度）は、コンピュータ・システムの下流のどこか、あるいは他の部分にとっては意味のあるパラメータである可能性もあるが、二乗計算という狭い目的には不要であると認識されれば、ｐｒｅｃｉｓｉｏｎは、置換または無視されてよい。たとえば、有効なｐｒｅｃｉｓｉｏｎ値を渡す代わりに、誕生日のようなｍｅａｎｉｎｇｌｅｓｓ値を渡しても、結果に悪影響を及ぼすことはない。同様に、図１２Ｂに示されるように、インターフェースＩ１は、インターフェースＩ１’に置き換えられるか、無視されるように再定義されるか、インターフェースにパラメータを追加するように再定義される。インターフェースＩ２も同様に、インターフェースＩ２’として再定義されるか、不要なパラメータを無視するように再定義されるか、別の場所で処理されることが可能なパラメータになることが可能である。ここでのポイントは、場合によっては、プログラミング・インターフェースが、ある目的には不要な態様（パラメータなど）を含むことがあるため、それらを無視または再定義したり、別の場所で別の目的のために処理したりすることが可能である、ということである。
【００８５】
２つの別々のコード・モジュールの機能の一部またはすべてをマージして、それらの間の「インターフェース」が形態を変えるようにすることも可能である。たとえば、図１０Ａおよび１０Ｂの機能を、それぞれ、図１３Ａおよび１３Ｂの機能に変換することが可能である。図１３Ａでは、図１０Ａの第１および第２のコード・セグメントがマージされて、その両方を含むモジュールになっている。この場合、それらのコード・セグメントは引き続き互いに通信していることが可能であるが、インターフェースは、より単一モジュールに適した形態に適応されることが可能である。したがって、たとえば、正式なＣａｌｌ文およびＲｅｔｕｒｎ文は不要になるが、インターフェース１のインターフェースに応じた同様の処理または応答が引き続き有効であってよい。同様に、図１３Ｂに示されるように、図１０ＢのインターフェースＩ２の一部（またはすべて）が、インターフェースＩ１と直列になってインターフェースＩ１”を形成するように書かれてもよい。図に示されるように、インターフェースＩ２は、Ｉ２ａおよびＩ２ｂに分割され、インターフェース部分Ｉ２ａは、インターフェースＩ１と直列になってインターフェースＩ１”を形成するようにコーディングされている。具体例として、図１０ＢのインターフェースＩ１が関数呼び出しｓｑｕａｒｅ（ｉｎｐｕｔ，ｏｕｔｐｕｔ）を実行し、これをインターフェースＩ２が受け取り、インターフェースＩ２は、ｉｎｐｕｔとともに渡された（二乗すべき）値が第２のコード・セグメントによって処理された後に、二乗された結果をｏｕｔｐｕｔとともに返すとする。そのような場合、第２のコード・セグメントによって実行される処理（ｉｎｐｕｔの二乗）は、インターフェースを呼び出すことなく、第１のコード・セグメントによって実行されることが可能である。
【００８６】
１つのコード・セグメントから別のコード・セグメントへの通信は、通信を複数の別々の通信に分割することによって、間接的に達成されることが可能である。これを、図１４Ａおよび１４Ｂに概略的に示す。図１４Ａに示されるように、第１のインターフェース（インターフェース１）上の通信を、別のインターフェース（この場合は、インターフェース２Ａ、インターフェース２Ｂ、およびインターフェース２Ｃのインターフェース）に適合するように変換するために、１つまたは複数のピースのミドルウェア（オリジナルのインターフェースの機能性および／またはインターフェース機能を分離させるので、分離（Ｄｉｖｏｒｃｅ）インターフェース）が設けられる。これが行われる可能性があるのは、たとえば、インターフェース１プロトコルに従うオペレーティング・システムと通信するように設計された、インストール・ベースのアプリケーションがあったが、オペレーティング・システムが別のインターフェース（ここでは、インターフェース２Ａ、インターフェース２Ｂ、およびインターフェース２Ｃのインターフェース）を使用するように変更された場合である。ポイントは、第２のコード・セグメントで使用されていたオリジナルのインターフェースが、もはや第１のコード・セグメントで使用されていたインターフェースと互換ではないように変更されたので、古いインターフェースと新しいインターフェースとを互換にするために、中間段階が用いられることである。同様に、図１４Ｂに示されるように、インターフェースＩ１からの通信を受け取る分離インターフェースＤＩ１と、インターフェース機能を、たとえば、インターフェースＩ２ａおよびＩ２Ｂに伝える分離インターフェースＤＩ２とを有する、第３のコード・セグメントを導入することが可能である（インターフェースＩ２ａおよびＩ２ｂは、ＤＩ２と動作するように再設計されているが、同じ機能的結果を与える）。同様に、ＤＩ１およびＤＩ２は、図１０ＢのインターフェースＩ１およびＩ２の機能を新しいオペレーティング・システムに伝え、かつ、同じまたは同様の機能的結果を与えるように、連係して動作することが可能である。
【００８７】
さらに別の可能な変形形態では、インターフェース機能を、同じ全体的結果を達成する何か別のものに置き換えるために、コードを動的に書き換える。たとえば、実行環境（たとえば、．Ｎｅｔフレームワーク、Ｊａｖａ（登録商標）ランタイム環境、または他の同様のランタイム型環境で与えられるような実行環境）において、中間言語（たとえば、Ｍｉｃｒｏｓｏｆｔ  ＩＬ、Ｊａｖａ（登録商標）ＢｙｔｅＣｏｄｅ、その他）で表されたコード・セグメントがジャスト・イン・タイム（ＪＩＴ）コンパイラまたはインタプリタに与えられるシステムがあってよい。ＪＩＴコンパイラは、第１のコード・セグメントから第２のコード・セグメントへの通信を動的に変換するように（すなわち、それらの通信を、第２のコード・セグメント（オリジナルまたは別の第２のコード・セグメント）で要求される可能性のある別のインターフェースに適合させるように）書かれることが可能である。これを、図１５Ａおよび１５Ｂに示す。図１５Ａからわかるように、この方法は、上述の分離シナリオと同等である。これが行われる可能性があるのは、たとえば、インストール・ベースのアプリケーションが、インターフェース１プロトコルに従うオペレーティング・システムと通信するように設計されているのに、オペレーティング・システムが別のインターフェースを使用するように変更された場合である。ＪＩＴコンパイラは、インストール・ベース・アプリケーションからのオンザフライの通信をオペレーティング・システムの新しいインターフェースに適合させるために用いられることが可能である。図１５Ｂに示されるように、この、インターフェースを動的に書き換える方法は、インターフェースを動的に要素分解するか、他の方法で変更することにも適用されることが可能である。
【００８８】
なお、前述の、代替実施形態によるインターフェースと同じまたは同様の結果を達成するシナリオは、直列および／または並列に、または他の介在コードを用いて、様々なかたちで組み合わせられることも可能である。したがって、前に提示された複数の代替実施形態は、相互に排他的ではなく、これらを混合し、適合させ、組み合わせて、図１０Ａおよび１０Ｂで提示された包括的なシナリオと同じまたは等価なシナリオを作成することが可能である。さらに、ほとんどのプログラミング構造がそうであるように、本明細書では説明されていなくても、本発明の趣旨および範囲によって表される、同じまたは同様のインターフェース機能性を達成する、他の同様な方法が存在する。すなわち、この機能性は、少なくとも部分的には、インターフェースの価値の根底をなすインターフェースによって表される機能性であり、それによって可能になる有利な結果である。
【００８９】
当業者であれば理解されるように、コンピュータ・システムを、そのコンピュータ・システムに対応し、そのコンピュータ・システムを制御する命令を収容するコンピュータ可読媒体とともに利用して、本明細書で開示された例示的実施形態を実装することが可能である。このコンピュータ・システムは、少なくとも１つのコンピュータ（マイクロ・プロセッサ、デジタル信号処理装置など）と、対応する周辺電子回路とを含むことが可能である。
【００９０】
本発明の対象を、構造的機能および／または方法論的操作に特化した表現で説明してきたが、添付の請求項で定義される本発明の対象は、先述の特定の機能または操作に必ずしも限定されないことを理解されたい。先述の特定の機能および操作は、あくまで、本請求項を実装する形態の例として開示されたものである。
【図面の簡単な説明】
【００９１】
【図１】本発明の例示的実施形態による、小規模非管理セキュア・ワークグループで使用されることが可能な例示的コンピュータ・システムを大まかに示すブロック図である。
【図２】本発明の例示的実施形態による、少数のコンピュータが非管理セキュア・ワークグループを形成するローカル・コンピュータ・ネットワークを示す概略図である。
【図３】本発明の例示的実施形態による、非管理セキュア・ワークグループ内の２つのコンピュータの間での信頼の確立とユーザ・アカウントおよびユーザ・プロファイルの複製とを示す概略図である。
【図４】本発明の例示的実施形態による、コンピュータが非管理セキュア・ワークグループに参加するプロセスを示すフローチャートである。
【図５】本発明の例示的実施形態による、非管理セキュア・ワークグループに参加したり、非管理セキュア・ワークグループを作成したりする選択肢を与える例示的ユーザ・インターフェース・ウィンドウを示す図である。
【図６】本発明の例示的実施形態による、コンピュータを非管理セキュア・ワークグループに参加させるシナリオを示す図である。
【図７】本発明の例示的実施形態による、非管理セキュア・ワークグループ内のコンピュータから別のコンピュータに、更新されたアカウント情報を提供することのフロー図である。
【図８】本発明の例示的実施形態による、非管理セキュア・ワークグループ内のコンピュータから、更新されたアカウント情報を取得することのフロー図である。
【図９】本発明の例示的実施形態による、非管理セキュア・ワークグループにおけるアプリケーション・プログラミング・インターフェース（ＡＰＩ）をサポートするアーキテクチャを示す図である。
【図１０Ａ】本発明の例示的実施形態による、包括的なプログラミング・インターフェースを示す図である。
【図１０Ｂ】本発明の例示的実施形態による、包括的なプログラミング・インターフェースを示す図である。
【図１１Ａ】本発明の例示的実施形態による、要素分解されたプログラミング・インターフェースを示す図である。
【図１１Ｂ】本発明の例示的実施形態による、要素分解されたプログラミング・インターフェースを示す図である。
【図１２Ａ】本発明の例示的実施形態による、再定義されたプログラミング・インターフェースを示す図である。
【図１２Ｂ】本発明の例示的実施形態による、再定義されたプログラミング・インターフェースを示す図である。
【図１３Ａ】本発明の例示的実施形態による、マージされた機能性を有するプログラミング・インターフェースを示す図である。
【図１３Ｂ】本発明の例示的実施形態による、マージされた機能性を有するプログラミング・インターフェースを示す図である。
【図１４Ａ】本発明の例示的実施形態による、分離された機能性を有するプログラミング・インターフェースを示す図である。
【図１４Ｂ】本発明の例示的実施形態による、分離された機能性を有するプログラミング・インターフェースを示す図である。
【図１５Ａ】本発明の例示的実施形態による、コードを動的に書き換えてインターフェース機能性を置換することによるプログラミング・インターフェースを示す図である。
【図１５Ｂ】本発明の例示的実施形態による、コードを動的に書き換えてインターフェース機能性を置換することによるプログラミング・インターフェースを示す図である。
【図１】
2009503632.tif 000003
【図２】
2009503632.tif 000004
【図３】
2009503632.tif 000005
【図４】
2009503632.tif 000006
【図５】
2009503632.tif 000007
【図６】
2009503632.tif 000008
【図７】
2009503632.tif 000009
【図８】
2009503632.tif 000010
【図９】
2009503632.tif 000011
【図１０Ａ】
2009503632.tif 000012
【図１０Ｂ】
2009503632.tif 000013
【図１１Ａ】
2009503632.tif 000014
【図１１Ｂ】
2009503632.tif 000015
【図１２Ａ】
2009503632.tif 000016
【図１２Ｂ】
2009503632.tif 000017
【図１３Ａ】
2009503632.tif 000018
【図１３Ｂ】
2009503632.tif 000019
【図１４Ａ】
2009503632.tif 000020
【図１４Ｂ】
2009503632.tif 000021
【図１５Ａ】
2009503632.tif 000022
【図１５Ｂ】
2009503632.tif 000023