JP2008509475A - コンテキストポリシー制御によるアプリケーション間の関連付けの制御のためのシステムおよび方法 - Google Patents

コンテキストポリシー制御によるアプリケーション間の関連付けの制御のためのシステムおよび方法 Download PDF

Info

Publication number
JP2008509475A
JP2008509475A JP2007524863A JP2007524863A JP2008509475A JP 2008509475 A JP2008509475 A JP 2008509475A JP 2007524863 A JP2007524863 A JP 2007524863A JP 2007524863 A JP2007524863 A JP 2007524863A JP 2008509475 A JP2008509475 A JP 2008509475A
Authority
JP
Japan
Prior art keywords
context
application
software
namespace
resource
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2007524863A
Other languages
English (en)
Other versions
JP5021475B2 (ja
Inventor
シェーファー スチュアート
シーハン ジョン
Original Assignee
ソフトリシティ インコーポレイテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ソフトリシティ インコーポレイテッド filed Critical ソフトリシティ インコーポレイテッド
Publication of JP2008509475A publication Critical patent/JP2008509475A/ja
Application granted granted Critical
Publication of JP5021475B2 publication Critical patent/JP5021475B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6281Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database at program execution time, where the protection is within the operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/545Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/542Intercept

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Health & Medical Sciences (AREA)
  • Databases & Information Systems (AREA)
  • Stored Programmes (AREA)

Abstract

複数のソフトウェアアプリケーションおよびリソースの相互運用性を制御する方法は、第1のアプリケーションから第2のアプリケーションまたはリソースへの通信をインターセプトするステップと、通信をコンテキスト管理システムに向けるステップと、通信用のコンテキスト候補リストを生成するステップと、これらのコンテキストのために定義された少なくとも1つのポリシーに従って候補リストを評価して、通信のために結果として生じたアクションおよび名前空間を識別するステップと、識別された名前空間内のポリシーによって定義された通りにアクションを実行するステップとを含む。この方法は、第2のアプリケーションの、1つまたは複数のバージョンを追跡するとともに、アプリケーションおよび/またはリソース名の進化を追跡するステップをさらに含む。この方法は、候補リスト上のコンテキストに関連付けられている1つまたは複数の操作を識別するステップと、その後の通信の前に識別された操作を実行するステップとをさらに含む。

Description

本発明は、コンピュータソフトウェアに関し、より詳細には、オペレーティングシステムソフトウェアに関する。
本出願は、参照により全内容が本明細書に組み込まれる、2004年8月3日出願の米国特許仮出願第60/598,234号明細書の利益を主張する。
多くの環境において、しかし特に、アプリケーションがネットワークを介して配信される環境において最も重要な機能は、複雑なインストールなしに、実行中にアプリケーションを稼働させることができる能力である。通常、いくつかの従来技術のシステムでは、プログラムがインストールされているかのように見せるためにクライアントシステムを変更したり、実際にソフトウェア自体をインストールし、次いでこれらの変更を取り消して、元の構成を復元したりするのが非常に面倒であった。これを行う際、次のような複数の問題が生じる。アプリケーションとコンピュータの現在の構成との間に競合があったり、同じまたは異なるアプリケーションのインスタンスがあったり、取り消しのプロセスが複雑であるため、アプリケーションを厳密なプロセスにかけて、その変更のすべてを確実に考慮できるようにする必要があったり、複数のアプリケーションによる共有ファイルやシステム構成要素の使用によって、取り消しやインストールのプロセスが複雑になっていたりする。
米国特許第09/859,209号明細書
多くのアプリケーション実行環境内では、社会性(sociability)およびバージョン管理の問題によるシステムの障害を防ぐために、アプリケーションを分離することが望ましい。しかし、そうするように構成されていない限り、分離は、これらのプログラムの相互運用を妨げる可能性がある。この問題は、ソフトウェアアプリケーションがオペレーティングシステム内で実行されるが、しかし実際にはそのオペレーティングシステム(OS)にインストールされない、あるいはいくつかのケースでは、実行中にインストールされ削除される「仮想インストール」環境において特に深刻である。
本発明による実施形態は、そうするように設計されていない環境、またはデフォルトの挙動を介して追加のシステム構成を必要とする環境の存在下で、アプリケーション間の通信および関連付けを容易にすることを対象とする。実施形態は、システムの元の前提を保持し、アプリケーションのランタイム分離を提供し、しかし厳しい管理ポリシーおよび操作ポリシー下での相互運用性を可能にする。
本発明の一態様によれば、複数のソフトウェアアプリケーションおよびリソースの相互運用性を制御する方法は、第1のアプリケーションから第2のアプリケーションまたはリソースへの通信をインターセプトするステップと、通信をコンテキスト管理システムに向けるステップと、通信用のコンテキスト候補リストを生成するステップと、これらのコンテキストのために定義された少なくとも1つのポリシーに従って候補リストを評価して、通信のために結果として生じたアクションおよび名前空間を識別するステップと、識別された名前空間内のポリシーによって定義された通りにアクションを実行するステップとを含む。この方法は、第2のアプリケーションの、1つまたは複数のバージョンを追跡するとともに、アプリケーションおよび/またはリソース名の進化を追跡するステップをさらに含む。この方法は、候補リスト上のコンテキストに関連付けられている1つまたは複数の操作を識別するステップと、その後の通信の前に識別された操作を実行するステップとをさらに含む。候補リストは、1つまたは複数の分散されたコンテキストから生成される。これらの通信は、プロセス間通信、オペレーティングシステム呼び出し、API呼び出し、またはライブラリ呼び出しのうちの少なくとも1つを含む。コンテキストは、グローバルコンテキスト、管理コンテキスト、ローカルシステムコンテキスト、システム仮想コンテキスト、ベンダーコンテキスト、ユーザコンテキスト、セッションコンテキスト、共有コンテキスト、または隔離コンテキスト(isolated context)のうちの少なくとも1つを含む。ポリシーは、ポリシーをいつ適用するかを識別するマッチニーモニック(match mnemonic)、複数の要求相関パラメータ(request correlation parameter)、およびポリシーを適用するルールのうちの少なくとも1つを含む。
本発明の別の態様によれば、他のアプリケーションまたはリソース内で実行されるアプリケーションのための代替名前空間を定義する方法は、一般名のリソースの呼び出しをインターセプトするステップと、その呼び出しの対象の名前空間を識別するステップと、その一般名を、その名前空間内のアプリケーションによって使用可能なローカル名に変換するステップと、そのローカル名によって識別されるリソースへのアクセスを提供するステップとを含む。この方法は、アプリケーションの、1つまたは複数のバージョンを追跡するとともに、アプリケーションまたはリソース名の進化を追跡するステップをさらに含む。ローカル名によって識別されたリソースへのアクセスが、代替名前空間における異なるローカル名によって識別されるリソースに対して容易になりうるように、ローカル名を絶対名に変換することもできる。対象の名前空間を識別するステップは、1つまたは複数の分散されたクエリを含み、対象の名前空間についての少なくとも1つのクエリは、1つまたは複数のシステムに共通する名前空間を追跡する管理システムに対して行われ得る。
本発明の別の態様によれば、複数のソフトウェアアプリケーションおよびリソースの相互運用性を制御するシステムは、通信用のコンテキスト候補リストを生成するコンテキスト管理システムと、コンテキストのために定義された少なくとも1つのポリシーに従って候補リストを評価するポリシーエンジンであって、さらに通信のために結果として生じたアクションおよび名前空間を識別するポリシーエンジンと、第1のアプリケーションから第2のアプリケーションまたはリソースへの通信をコンテキスト管理システムに向ける仮想関係マネージャであって、識別された名前空間内の少なくとも1つのポリシーによって定義されたように結果として生じたアクションを示す指示を受信する仮想環境マネージャとを含む。
本発明は、クライアントコンピュータのオペレーティングシステムの変更なしにアプリケーションソフトウェア環境を作成するシステムを提供し、このシステムは、オペレーティングシステム抽象化/保護レイヤ(abstraction and protection layer)を含み、前記抽象化/保護レイヤは、稼働中のソフトウェアアプリケーションと前記オペレーティングシステムとの間に挿入され、それによってアプリケーションが稼働することができる仮想環境が提供され、実質上アプリケーションレベルの対話が取り除かれる。好ましくは、オペレーティングシステムへの直接の任意の変更は、稼働中のアプリケーションのコンテキスト内で選択的に行われ、抽象化/保護レイヤは、管理設定に従って仮想環境を動的に変更する。さらに、いくつかの実施形態において、システムは、共有システムリソースの使用を絶えず監視し、システム構成要素への変更を適用したり削除したりするサービスとして働く。
したがって、例えば、Windows(登録商標)レジストリへのすべての操作がWin32 APIを介して行われる、Windows(登録商標)ベースのオペレーティングシステム内の実施形態では、システムは、好ましくは、機能をフックする手段を提供し、それによって前記機能が呼び出されるたびに、別の機能またはアプリケーションが呼び出しをインターセプトし、システムは、最も好ましくは、サーバから稼働されるアプリケーションによる要求かどうかに関係なく、またはアクティブに管理される構成キーに対するアプリケーションによる要求である場合、適切な各API関数をフックして要求に応じる。
本発明の上記および他の特徴および利点は、様々な図面を通じて類似の参照番号が同じ部品を参照する添付の図面に示されているように、本発明の実施形態の以下のより特定の説明から明らかになる。
次に、図1を参照すると、オペレーティングシステムとソフトウェアアプリケーションとの本発明の相対的な関係を図示するブロック図が示されている。本発明の好ましい実施形態は、「オペレーティングシステムガード」と呼ばれるオペレーティングシステム抽象化/保護レイヤ100を提供する。内部で、多くのオペレーティングシステム10は、アプリケーション50が稼働時に互いに影響を与えることを防ぐために、障害ドメインを提供する。しかし、共有システムリソース、および他の多くのオペレーティングシステムの機能によって、この保護ドメインへの障害が可能になってしまう。オペレーティングシステム抽象化/保護レイヤ100は、ほとんどのアプリケーションレベルの対話を取り除くために、アプリケーション50間に、追加の、プログラム制御されるバリアを提供する。オペレーティングシステム抽象化/保護レイヤ100は、アプリケーション50とオペレーティングシステム10との間に配置されており、変更を稼働中のアプリケーションのコンテキスト内に封じ込めることに対して、オペレーティングシステム10への直接の変更を選択的に可能にする。一例として、Windows(登録商標)ベースのシステムでは、Windows(登録商標)レジストリへのすべての操作は、通常、Win32 APLを介して行われる。以下で説明するように、QueryRegExやGetProfileStringのようなシステム関数は、呼び出されるたびに、別の関数またはアプリケーションが呼び出しをインターセプトするように、フックすることができる。本発明のオペレーティングシステムガード100は、アクティブに管理されているアプリケーションによる要求である場合、またはアクティブに管理されている構成項目に対するアプリケーションによる要求である場合、適切な各API機能をフックして要求に応じる。このように、そうするように明確に構成されていない限り、本発明の実施形態は、エンドユーザのシステムに対してどんな実際の変更をも加えることなく、アプリケーション環境を作成することができる。また、実行時にアプリケーションによって加えられる任意の変更は、容易に持続されたり、削除されたりすることができる。
本明細書で使用される場合、「オペレーティングシステムガード」という用語は、稼働中のアプリケーションと、アプリケーションが稼働し得る仮想環境を提供する対象のコンピュータまたはクライアントコンピュータのオペレーティングシステムとの間のレイヤを定義する。この仮想環境は、いくつかの目的を有する。まず、仮想環境は、稼働中のアプリケーションがクライアントコンピュータに変更を加えることを防ぐ。アプリケーションがクライアントコンピュータの基礎を成すオペレーティングシステムの設定を変更しようと試みる場合、こうした設定は、保護され、仮想環境においてのみ「行われる」。例えば、アプリケーションがMSVCRT.DLLのような共有オブジェクトのバージョンを変更しようと試みる場合、この変更は、そのアプリケーションに局限され、クライアントコンピュータにあるコードはもとのままである。
第2に、本発明の一実施形態は、インストールを実行することなくインストール環境であるように見え、したがって「疑似インストール」または「インストールのよう」な環境を稼働中のアプリケーションに提供する。すべての設定は、提供されているアプリケーションが稼働するとき、またはアプリケーションが特定の設定を必要とするちょうどよいときに仮想環境に導入される。例えば、Adobe Photoshop(登録商標)などのコンピュータプログラムがHKEY_LOCAL_MACHINE\Software\Adobe下の1組のWindows(登録商標)レジストリエントリを認識すると予想し、Photoshopがインストールされていないために、レジストリエントリがクライアントコンピュータ上のそこにない場合、本発明のこの態様に従って作成されたシステムは、まさにレジストリエントリがクライアントコンピュータ上にあるかのように、Photoshopプログラミングコードにこうしたレジストリエントリを「示す」。
次に、本発明の一実施形態は、クライアント/ユーザのマシンに存在し得る情報がアプリケーションの挙動を干渉したり変更したりするのを防ぐ。例えば、ユーザがすでに、Photoshopの古いバージョンについて、
HKEY_LOCAL_MACHINE\Software\Adobe
下に既存のレジストリエントリを有しており、今は新しいバージョンを操作することを望んでいる場合、競合を防ぐために、こうしたエントリを新しいアプリケーションから隠すことができる。
最後に、本発明の一実施形態は、アプリケーションの現在の書き方では存在し得ないアプリケーションの挙動をロック解除する。本発明の一実施形態は、管理設定に従って仮想環境を動的に変更する機能を介してこれを行う。例えば、企業ソフトウェアアプリケーションの典型的な例では、クライアントアプリケーションは、ユーザがレジストリのある設定から接続すべきデータベースのアドレスの設定を読み取ると予想し得る。このレジストリキーは、HKEY_LOCAL_MACHINEに格納されることが多いため、設定は、クライアントコンピュータ全体にグローバルである。ユーザは、クライアントを再インストールするか、このレジストリキーをどのように変更するかがわからなければ、1つのデータベースにしか接続できず、アプリケーションを実行することを望むたびにそのようなことを行うことになる。しかし、本発明を実装することによって、異なるデータベースにそれぞれ接続するアプリケーションの2つのインスタンスは、同じクライアントコンピュータ上で稼働することができるようになる。
コンテキスト
この機能を提供することによって、各アプリケーションは、システム内のプライベートコンテキストで稼働することができる。アプリケーションにとって、システムがどのように見えるか、およびその挙動のそれ自体の私見を有する。本発明の実施形態は、その固有の性質によってこれを提供する。図2を参照すると、2つの別々のアプリケーション52、54、または同じアプリケーション(図1で50と示されている)の2つのインスタンスに、別々のまたは異なるコピーのシステムサービス、構成、およびデータを有するように見えるプライベートコンテキストを提供することができる。好ましい実施形態では、これは、システムのデフォルトの挙動である。
この概念を拡張することによって、本発明の一実施形態のオペレーティングシステムガード100は、2つ以上のアプリケーション52、54がその仮想設定の一部またはすべてを共有することができる、共有され、制御されたコンテキストを提供することもできる。これは、Microsoft Officeなどのアプリケーションスイート、または他のアプリケーションの存在下で異なるように働くアプリケーションには重要である。例えば、多くのアプリケーションは、メールマージまたは文書作成機能を行うエンジンとしてMicrosoft Wordを使用する。アプリケーションは、Wordのインストールまたは存在について知っており、その機能を活用することができなければならない。好ましい実施形態において、同じアプリケーションの2つのインスタンスは、デフォルトでは単一のコンテキストを共有し、2つの別々のアプリケーションは、プライベートコンテキストを維持する。図3を参照すると、2つのアプリケーション52、54は、オペレーティングシステムガード100が使用可能なシステムリソースの共有ビューを提供する間、稼働することができる。
設計
図4に示すように、オペレーティングシステムガードは、以下のサブシステム、コア102、構成マネージャ104、ファイルマネージャ106、共有オブジェクトマネージャ108、デバイスマネージャ110、フォントマネージャ112、プロセスマネージャ120、プロセス環境マネージャ114、ローダ116、およびリカバリマネージャ118から成る。コア102を除いて、プロセスマネージャ120およびローダ116、他のすべてのサブシステムは、以下でさらに詳しく説明される仮想化システムの要素である。コア102は、主に、構成ファイルによって定義された通りにアプリケーションおよびそのコンテキストを管理する役割を果たす。
オペレーティングシステムガードによって提供されるプロセスマネージャ120によって、コア102に、対象であり得る任意のプロセスまたは対象のスレッドイベントを知らせることができる。また、これは、プロセス空間を管理し、スレッド処理を扱うために、オペレーティングシステム依存型の実装に抽象化レイヤを提供する。プロセスを、いくつかのアプリケーションバンドルにまとめることができる。アプリケーションバンドルとは、その仮想リソースを互いにすべて共有する1群のプロセスである。例えば、Microsoft WordおよびMicrosoft Excelは、アプリケーションスイートとして一緒に働くことができるように、仮想レジストリおよび仮想ファイルシステムを共有したい場合がある。プロセスマネージャ120は、これらのアプリケーションバンドルを「アプリケーション」と呼ぶ。プロセスマネージャ120がアプリケーションを解放するように指示されるまで、アプリケーションについての情報は存在する。別のプロセスは、アプリケーションバンドルにロードする必要がある場合、アプリケーションが解放されない限り、そうすることができる。
本発明の一実施形態のローダサブシステム116を使用して、仮想環境を稼働中のシステムに転送したり、そこから転送したりすることができる。各仮想化サブシステムは、その構成をローダ116用に直列化し、逆のプロセスを介してそれを復元することができる。さらに、ローダ116は、段階的にロード/アンロードし、個々の段階の結果を単一の環境記述にまとめることができる。
レジストリおよび構成
アプリケーションは、適切に動作するように、様々な量の構成情報を必要とする。アプリケーションがその構成を読み取ることができる、ゼロから数千の構成レコードが存在する。Windows(登録商標)では、構成情報、Windows(登録商標)レジストリおよびシステムレベル初期化ファイル、win.iniおよびsystem.iniの共有の場所が2つある。さらに、\WINDOWS(登録商標)\SYSTEMディレクトリは、アプリケーションがアプリケーション固有の構成または初期化ファイルを書き込む共通の場所である。また、アプリケーションは、追加の構成情報を格納するために、ローカルアプリケーションディレクトリ内の構成またはデータファイルを使用する。この情報は、メーカー独自のフォーマットであるため、扱いにくいことが多い。Windows(登録商標)以外のプラットフォームには、レジストリに相当するものはないが、構成情報のための共通ディレクトリが存在する。X Windows(登録商標)には、app−defaultsディレクトリがある。Macintoshには、System Folderがあり、他のオペレーティングシステムには、対応する要素がある。ほとんどのUNIX(登録商標)システム上で、図2に示されているように、各個々のアプリケーション52、54は、ほとんどの場合、それ自体の構成62、64をローカルに格納する。
本発明の一実施形態は、完全な機能レジストリをアプリケーションに提供し、しかし基礎を成すシステムレジストリへの変更を防ぐ仮想Windows(登録商標)レジストリ構成要素を含む。アプリケーションがアクセスすると予想するキーはすべて存在するが、仮想レジストリに存在するだけであり得る。このようにして、本発明のオペレーティングシステムガード100およびWindows(登録商標)レジストリは、レジストリにアクセスするための2段階プロセスを形成する。アプリケーションは、キーへのアクセスを必要とする場合、レジストリに対するクエリを行う。オペレーティングシステムガードは、キー、およびキーの値を知っている場合はその値で応答する。そうでない場合、オペレーティングシステムガードは、要求がWindows(登録商標)レジストリに渡ることを許可する。その値を変更する試行が行われる場合、オペレーティングシステムガードによって、それ自体のみに変更を行うことができる。次回、アプリケーションがキーにアクセスするとき、それはオペレーティングシステムガードに存在し、要求は、本当のレジストリには流れず、それをもとのままにしておく。
オペレーティングシステムガードが使用するキーは、3つの別々のセクションにおいて指定される。これらのオペレーティングシステムガードキーは、既存のキーを変更したり、キーの存在を削除したり、レジストリに新しいキーを追加したりするために、これらのセクションにおいてコマンドとして指定される。このように、仮想レジストリは、システムが意図する通り正確に生じ得る。キーの有無は、キーの実際の値と同じぐらい重要であるため、これは重要である。
一実施形態において、オペレーティングシステムガードは、まず、アプリケーションの基本的なレジストリエントリを含むデータファイルをロードする。次いで、ユーザの選好を含む第2のデータファイルがロードされる。最後に、オペレーティングシステムガードは、任意選択で、ユーザがオーバーライドすることができないポリシー項目を含む1組のキーをロードすることができる。3つのファイルは、互いの上にロードされ、各ファイル内の複製項目がその前のファイル内の項目をオーバーライドする。ユーザ固有の情報は存在せず、アプリケーションがデフォルトのみ存在するため、ユーザが最初にアプリケーションを実行するとき、第2のデータファイルは存在しない。だが、各セッションの後、オペレーティングシステムガードは、将来のセッションで使用するためにその第2のデータファイルを生成して、ユーザの変更を保存する。
構成ファイルは、2つの方法で変更することができる。まず、ファイルは、アプリケーションによって直接編集することができる。このシナリオでは、以下で説明されるオペレーティングシステムガードファイルサブシステムは、ファイルに加えられる変更を扱う。第2に、好ましい実施形態では、アプリケーションは、これらのファイルを変更するために、GetProfileString、WriteProfileStringなど、Windows(登録商標) APIファミリの呼び出しを呼び出すことができる。この場合、本発明の一実施形態のオペレーティングシステムガードは、まさに上述したように、これらの呼び出しをインターセプトし、内部からそれらの要求に応える。
共有オブジェクト
オペレーティングシステムおよび稼働中のアプリケーションによって使用される多くの構成要素は、いくつかのアプリケーションまたはインスタンスにわたって共有される。一般に、これは、非常に良い考えである。これは、同じファイルの多くのコピーを必要とせず、ディスクスペースを節約する。また、オペレーティングシステムおよびサードパーティが一般的に使用されるコードのライブラリを作成し、分配する機能も提供する。Windows(登録商標)プラットフォームでは、ダイナミックリンクライブラリ、すなわちDLLは、アプリケーション内およびアプリケーションにわたって共有されることが多い。他のプラットフォーム上でも、問題は同じである。Macintoshでは、INITおよび他のシステム構成要素は、アプリケーション用にロードされる。これらの構成要素は、多くのバージョンを有する可能性があり、一度にそのうちの1つのみが使用される。UNIX(登録商標)システムでは、動的共有オブジェクト、例えば、「.so」ライブラリファイルは、ロード時間を速めたり、ディスクスペースを節約したりするために、また他の理由のためにアプリケーションによって使用される。多くのプログラムは、デフォルトの「libc.so」を使用する。しかし、このライブラリファイルは、通常、libc.so.3など、それ自体の何らかのバージョンへのシンボリックリンクである。実際には、この機能は、大きな被害をもたらした。これらの共有構成要素は、頻繁に改正を受けており、同じ構成要素の多くのバージョンがインストールできるようになっている。アプリケーションの作成者は、そのソフトウェアが、潜在的に共有構成要素の1つまたはいくつかのバージョンのみとしか協働しないことを知っている。したがって、実際には、アプリケーションは、通常、他の現在のバージョンを上書きして、作成者が望むバージョンをインストールする。これは、潜在的に、システム上で稼働する他のアプリケーションにおける障害を引き起こす。
Windows(登録商標)98、Windows(登録商標)2000では、Microsoftは、システム管理者がアプリケーションのベースディレクトリにXXXX.LOCALと呼ばれるファイルを作成できるように、Windows(登録商標) Protected File System(WPFS)を作成した。この場合、XXXXは、拡張子なしの実行ファイル名である。これによって、Windows(登録商標)ローダは、LoadLibrary実行中にパス参照を解決するその方法を変更する。しかし、これは、問題を完全に解決するには十分ではない。まず、XXXXファイルの設定は、システム管理者の知識に任せられるが、これはばらつきが大きい。第2に、ある構成要素バージョンは、元に戻され、次いで、この構成要素をローカルディレクトリにインストールし、「.LOCAL」ファイルを作成する必要がある。これは、WINDOWS(登録商標)\SYSTEMにある最も基本的な構成要素でもなければ、どの構成要素にとっても簡単なプロセスではない。また、この解決策は、必要な機能のすべてをカバーするわけではない。LoadLibrary中、Windows(登録商標)は、明示的または暗黙的なLoadLibraryの結果、構成要素が解決されたかどうかに応じて、またそれが名前付きの、またはよく知られているDLLであることを示すレジストリキーが存在するかどうかに応じて、異なるパス解決セマンティクス(path resolution semantics)を使用する。この場合、LoadLibraryの呼び出しは、常にWINDOWS(登録商標)\SYSTEMディレクトリに解決する。
また、DLLおよび他の共有構成要素も、参照カウントセマンティクス(reference count semantics)を保持して、稼働中のアプリケーションが構成要素を参照していない場合を除いて、構成要素が確実にもとのままであるようにする。実際には、オペレーティングシステムベンダーのアプリケーションおよびオペレーティングシステム自体のみが、このプロトコルに適切に従っている。
原則として、共有オブジェクトが常に正しい構成要素に解決することが望ましい。この機能を提供するために、アプリケーションが機能することができる構成要素のバージョンまたはバージョンの範囲を理解することが必要である。次いで、アプリケーションが稼働されるとき、本発明は、構成要素が正しく解決されることを確実にするはずである。本発明において、必要な場合、WPFSまたは他のオペレーティングシステム提供機能の使用を自動化することが許容できる。この場合、必要な構成要素を検出し、それらをローカルファイルシステムに入れることが必要である。必要なものがすでにある場合、インストールプログラムが構成要素をインストールしないことが多いので、これは、インストールを監視しているだけより複雑である。
また、名前付きのオブジェクトが正しくロードされることを確実にするための方法を識別することが望ましい。Windows(登録商標)プラットフォーム上では、MSVCRT.DLLは、この問題領域内でかなり問題の種である。このオブジェクトの複数のバージョンが維持される場合、上記のレジストリキーは、動的に変更することができ、それによって、LoadLibrary機能が正しい構成要素バージョンを解決できるようになる。正しい構成要素のロードを確実にする別の妥当な方法は、有効な検索パスを使用するためにプロセス環境を動的に編集することである。この検索パスは、システム全体の構成要素前にローカル構成要素が解決されることを確実にする。正しい共有オブジェクトの解決の別の考え得る方法は、シンボリックリンクの使用によるものである。シンボリックリンクは、共有構成要素のために作成することができ、これは、実行時にコンピュータのファイルシステムによって必要な構成要素に解決される。最後に、共有オブジェクトのファイルからの情報についての実際の開く/読み取る/閉じる要求は、本発明によってインターセプトすることができ、ローカルシステム上または本発明のサブシステム内に存在し得るファイルの正しいバージョンについて、動的に応答することができる。
特別な形がいくつか存在する。Windows(登録商標)プラットフォーム上で、OLE、ODBC、MDAC、および他のベンダー固有の構成要素のいくつかは、いくつかのまたはすべての稼働中のプロセス間にグローバルに共有されるように書き込まれる。OLEの場合、個別のプロセス間でのデータおよびメモリスペースの共有さえ行う。これらの構成要素の多くのように、OLEは、それ自体の複数のコピーが一度に稼働するのを防ぐ。OLEは、特定のバージョンが特定のアプリケーションのためにロードされることを必要とする多くのバグおよび機能も有する。本発明では、アプリケーションは、どのバージョンでも必要とされるOLEをロードすることができ、さらに同じバージョンのOLEを使用する他の構成要素との共有セマンティクスは依然として可能である。
一般に、明確にそういうものとして構成されていない限り、共有オブジェクトは、競合の防止を確実にするために、プライベートにロードされるべきである。構成要素をプライベートにロードできるようにするために使用される方法については何も、オペレーティングシステムガードによってアクティブに管理されているかどうかに関わらず、それをきちんとアンロードしたり、別のソフトウェアアプリケーションのために正しくロードしたりすることを妨げるべきではない。さらに、システムがクラッシュした場合、このクラッシュから、基礎を成すオペレーティングシステムを上書きしたり変更したりしていないクリーンな状態に回復することが必要である。
ファイル
多くのアプリケーションは、アプリケーション内のデータファイルを使用して、構成エントリまたは他のアプリケーションデータを格納する。本発明の実施形態は、本明細書で上述した仮想レジストリに酷似した仮想ファイルシステムを提供する。アプリケーションが開始する前に、本発明の一実施形態は、仮想環境から隠すべきファイルやそこに追加すべきファイル、または仮想環境内の別のものに転送すべきファイルを含めて、ファイルシステムの変更のリストをロードすることができる。アプリケーションが任意のファイルにアクセスしたり、それらを変更したりするときはいつでも、オペレーティングシステムガードは、ファイルを転送すべきであるかどうかをチェックし、そうである場合、好ましい実施形態において、オペレーティングシステムガード構成で指定された場所に要求を転送する。
ユーザのローカルドライブ上に書き込むために、アプリケーションが新しいファイルを作成しようとしたり、既存のファイルを開こうとしたりする場合、オペレーティングシステムガードは、実際にファイルが転送された場所において作成されたり、変更されたりすることを確実にする必要がある。アプリケーションが後で再ロードされる場合、このファイルマッピングは、オペレーティングシステムガード仮想環境に再ロードされなければならない。要求が、ユーザのローカルドライブにある既存のファイルを変更することであるとき、オペレーティングシステムガードは、要求を続ける前に当該のファイルを転送ポイントにコピーする必要がある。転送されるファイルは、ファイルパスの安全なマッピングを確実にするために、元のファイルと同じ名前のものでない場合がある。一実施形態において、INIファイルは、このように処理されて、最大のアプリケーション互換性を可能にしながら、最大のシステムセキュリティを提供する。
本発明の一実施形態は、ネットワークを介して配信されるアプリケーションに特に有用である。こうした実装形態では、ソフトウェアアプリケーションがいくつかの種類のデータから成ることを理解することが重要であり、この場合、ソフトウェアアプリケーションが使用する大量のファイルは、最も好ましくは、別々の論理ドライブ上にマウントされる。ファイルベースおよびレジストリベースを含む構成は、ユーザ固有のものおよびシステム全体のものとすることができる。使用されるアプリケーション配信システムは、任意のファイルがこれらのタイプのどれであるかについて各ファイルをマークする必要がある。この情報は、オペレーティングシステムガードシステムに適切に処理させるためのヒントを提供する。
デバイスドライバ
多くのアプリケーションは、デバイスドライバまたは他のオペレーティングシステムレベルのソフトウェアを使用して、ハードウェアサポートやオペレーティングシステムとの低レベルの直接の対話など、その機能の一部を実施する。本発明の一実施形態では、オペレーティングシステムガードは、これらの構成要素を動的に、かつできる限りプライベートにアプリケーションの仮想環境に追加したり、そこから削除したりする機能を提供する。
多くのデバイスドライバは、動的にロード可能になるように構築される。可能な場合、すべてのデバイスドライバを動的にロードするのが好ましい実施形態である。デバイスドライバがブート時に静的ロードを必要とする場合、アプリケーションの実行前に、ユーザにこの知識が提供されなければならない。システムがリブートされると、アプリケーションは、それが中止されたところから続行するはずである。しかし、かなりの割合のデバイスドライバは、動的にアンロード可能ではない。ドライバを動的にアンロードすることが好ましいが、これが達成できない場合、ドライバは、次のリブート時に削除するようにマークされ、ユーザにこれを気付かせる必要がある。アプリケーションが次のリブート前に2回目に実行される場合、システムは、ドライバの存在に引き続き気付いて、第2のインストールを試行せず、次のリブートで削除可能な構成要素を再マークするために、終了を待つ必要がある。
本発明の実施形態が適切に機能できることを確実にするために、基本の類似性および違いは、デバイスドライバクラスごとに存在するため、それらを特徴付けることが重要である。常に存在しているシステムハードウェアのデバイスドライバをロードしたり、アンロードしたりすることは望ましくない。これは、プログラミングの容易さに関して、好ましい実施形態ではないが、本発明の範囲内に含まれており、本発明の実施形態を使用して配信され、稼働されるアプリケーションのライセンス契約での制限など、特定の理由のために必要とされ得ることを理解されたい。
Microsoftプラットフォーム以外では、デバイスドライバは、通常、極めて異なるように扱われる。Macintoshシステムは、静的および動的ドライバをサポートするが、すべて同じ方法を介してインストールされ、削除される。Macintoshシステムフォルダとリンクすることによって、必要なサポートが提供される。UNIX(登録商標)システムでは、デバイスドライバは、たいていの場合、稼働中のUNIX(登録商標)カーネルが変更され、続いてリブートが行われることを必要とする。このプロセスは、非常に複雑である可能性がある。一実施形態において、アプリケーションが完了した後、カーネルを再設定することを含めて、このプロセスは、自動化される。プロセスの一般のパラメータは、Windows(登録商標)アプリケーションについて上述したものと同じであり、コンパイルの実際のプロセスステップ、およびこうしたオペレーティングシステムに精通している人は、リブートを行うことができる。
最終的に、システムの障害にわたってドライブを回復し、削除することができることが望ましいことを当業者は理解されよう。したがって、システムの保全性を保持するのに必要などんなデータやプロセスも、本発明の一実施形態に含まれる。当業者は、とりわけ、永続ハードウェア付属装置に関連付けられているものなど、すべてのタイプのデバイスドライバが本発明の実施形態を介して便利にまたは効率的に提供されない可能性があることも理解されよう。
他の項目
本発明の実施形態では、その挙動または存在が代替のオペレーティングシステム上で異なる、いくつかの構成要素があると理解される。これらの構成要素は、フォント、プロセス、環境変数他を含む。
一部のアプリケーションは、正しく実行するために、フォントがインストールされる必要がある。必要な任意のフォントは、オペレーティングシステムガードの構成ファイルで指定される。オペレーティングシステムガードは、アプリケーションを実行する前にこれらのフォントを有効にし、必要な場合、それらをその後削除する。ほとんどのシステムは、それらを登録したり、システムにその存在を気付かせるためのプロセスに加えて、フォントを格納するための共通領域を有しており、オペレーティングシステムガードは、これらの使用可能な方法を使用する。
Windows(登録商標)では、フォントは、\WINDOWS(登録商標)\FONTSディレクトリにコピーされる。しかし、これは、フォントが稼働中のプログラムから使用可能であることを保証しない。好ましい実施形態では、プログラムがWindows(登録商標) APIを使用してフォントにアクセスする場合、フォントは、CreateScalableFontResource/AddFontResourceなど、Win32 API呼び出しに登録される必要がある。これは、フォントをシステムフォントテーブルに挿入する。いったん完了すると、オペレーティングシステムガードは、RemoveFontResourceなど、別の適切なAPI呼び出しによってフォントを削除し、次いでシステムからファイルを削除することができる。代替実施形態として、オペレーティングシステムガードは、仮想レジストリ方法で記述したようにAPI関数をフックすることができる。さらに、オペレーティングシステムガードは、そのファイルサブシステムを使用して、実際のフォントファイルを稼働中のシステムに入れるのを避けることができる。
Macintoshでは、プロセスは、極めて似ており、Macintoshシステムフォルダ内のファイルおよび登録起動に基づく。しかし、UNIX(登録商標)では、プロセスは、アプリケーションに依存する。たいていの場合、フォントリソースは、適切な場所に解決された正規のファイルとしてシステムに追加されるので、名前によってアクセスすることができる。多くのMotifシステムでは、フォント記述は、フォントリソースファイルに入れる必要があり、これによって、フォントを解決することができる。MotifまたはXアプリケーションは、解決サブシステムを介して、または直接呼び出しによってフォントを呼び出すことができる。最近、多くのMotifおよびCDEベースのシステムは、Adobe拡張可能ポストスクリプトフォントを使用する。これらのフォントは、Adobeタイプの管理システムを介して管理する必要がある。しかし、例外があり、上述したように、Windows(登録商標)や他のオペレーティングシステムのデフォルトフォント管理システムの代替がある。Adobe Type Managerは、他のサードパーティタイプの管理システムのように、このプロセスの何らかの代替インターフェイスを提供する。ほとんどの場合、インターフェイスをサポートするかそれを無視するかを決定する必要がある。オペレーティングシステムガードの目的は、これらのすべてのシステムに普遍的なレイヤを提供することではなく、単に、オペレーティングシステム自体のサブシステムのためにそのようなことを行うことである。
多くのアプリケーションは、環境変数が設定されることを必要とする。これは、UNIX(登録商標)システムで最も一般的であるが、もともとUNIX(登録商標)において書かれ、Windows(登録商標)オペレーティングシステムに移植されたソフトウェアによってもかなり使用される。Windows(登録商標)オペレーティングシステム上のアプリケーションは、DOS PATH環境変数にかなり依存しており、それ自体のアプリケーション固有のエントリを設定することが多い。Windows(登録商標) 9x/Me環境では、そのコアがDOSサブシステムであるため、適用可能である多くの環境設定がある。アプリケーションが特定の変数または既存の環境変数において設定されるべき値の存在を必要とする場合、必要な環境変数は、オペレーティングシステムガードの構成ファイルにおいて指定される。オペレーティングシステムガードは、起動されると、アプリケーションの主なプロセスにこれらの変数を設定する。アプリケーションは、通常、動作しているとき、環境設定を変更しないため、仮想環境は、これらの呼び出しをトラップせず、レジストリおよび構成サブシステムが行う機能の全装備も提供しない。
回復
前のセクションに示した一部の場合、実際の変更をオペレーティングシステムに加える必要がある。これは、デバイスドライバおよびフォントではよくある。さらに、持続され、アプリケーションが次に実行されるときに使用できる必要がある変更を仮想環境に加えることができる。できるだけ早い機会に、システムから変更を削除して、オペレーティングシステムガードシステムがシステムへの変更から回復することができることを必要とする。あるいは、アプリケーションの実行中にシステムがクラッシュした場合、オペレーティングシステムガードは、システムがリブートされる、またはその他の場合、システムへのすべての変更を削除するのに十分な情報を追跡し、仮想環境に加えられた変更を追跡する必要がある。好ましい実施形態では、これは、トランザクションログとして実装されるが、他の実施形態では、他の何らかの類似の構成要素として実装することができ、これは、変更を取り消すことができるように、システム機能時に読み取ることができる。
仮想化の制御
本発明の重要な態様は、オペレーティングシステムガードが可能な仮想化の、多くの面の制御に関する。好ましい実施形態では、制御すべきソフトウェアシステムの正しい側面を確認することができる計装プログラム(instrumentation program)が存在する。また、管理者およびエンドユーザが、こうした項目を表示し、システムによって仮想化されるように変更できるようにする方法も含まれる。
自動化プログラムでは、制御の側面をきちんと読み取るために、制御すべきアプリケーションが観察される。自動化プログラムは、アプリケーションのインストールプロセス中、アプリケーションの実行中、またはそれらの組み合わせ中にこのタスクを実行することができる。好ましい実施形態では、オペレーティングシステムガードは、ラッパアプリケーション(wrapper application)に組み込まれている。インストール後、1つまたは多くのソフトウェアの使用後、ラッパアプリケーションは、その全アクションの詳細なリストについて、オペレーティングシステムガードに対してクエリを行う。アクションのこのリストから、ラッパアプリケーションは、その後の使用時に、オペレーティングシステムガードをロードし、動作させるために必要な構成ファイルを作成する。
インストールプロセスの一部として使用される場合、オペレーティングシステムガードは、一実施形態では、インストールをその環境のみに入れることができる仮想レイヤとして働く。インストール後、ファイル、設定などのすべては、後でリロードするためにダンプすることができる。このように、インストールは、元のシステムをそのままにしておき、必要な構成ファイルを自動的に作成してしまう。アプリケーションの使用中に使用されるとき、オペレーティングシステムガードは、他と異なる環境への変更を記録したり、構成ファイルを分類し直したりすることができる。
オペレーティングシステムガードは、後処理のために、その情報をラッパアプリケーションに渡す。好ましい実施形態では、システムが作成できる自動エントリに加えて、ラッパアプリケーションは、オペレーティングシステム固有の、およびアプリケーションまたはドメイン固有の知識によりプログラミングされる。この知識は、構成項目または他のエントリの既知の使用を反映するようにプロセスの出力を変更するために使用される。好ましい実施形態では、コード化への変更をもたらすために、ルールベースのシステムを使用して、観察された挙動を既知のシナリオと比較する。
また、ラッパアプリケーションは、プロセスの構成出力のためのビューワおよび/またはエディタとして使用される。このエディタは、好ましい実施形態では、システム管理者が、項目または項目群を構成に追加したり、編集したり、構成から削除したりできるようにする。エディタを介して構成を観察する際、管理者は、構成の複製を作成して、必要に応じて特定の項目を変更して、アプリケーションレベルの、またはユーザカスタムの変更をもたらすようにすることもできる。
次に図1を参照すると、本発明の一実施形態が機能的に示されている。この実施形態では、2組のアプリケーション/ユーザデータ60が示されている。オペレーティングシステムガード100は、アプリケーション50の2つのインスタンスが互いに干渉しないようにする。さらに、上述したように、オペレーティングシステムガード100は、抽象化レイヤとして働き、したがって、アプリケーションソフトウェア50と、クライアントコンピュータの実際のオペレーティングシステム10との間でコマンドおよび通信を収集する。矢印によって図示されているように、オペレーティングシステムガードとソフトウェアアプリケーションとの間にいくつかのコマンドがあり、これは、これらのコマンドが代わりにオペレーティングシステム自体によって作用される通常のインストールとは異なり、結果的に、必ずしもオペレータが意図したものではない可能性があるクライアントコンピュータへの変更がもたらされる。一方、他のコマンドは、オペレーティングシステムガードを通過し、次いで、オペレーティングシステム自体に転送される。
多くのソフトウェアアプリケーションは、1つまたは複数の追加アプリケーションとともに動作するように設計されている。これは、1組のアプリケーションは、パッケージ化され、単一のユニットとして販売され、しばしば一緒に働くように作成されている、Microsoft Officeなどのソフトウェアの場合がそうである。これは、別のアプリケーションに「プラグイン」するように設計されている、または何らかの方法で通信するように設計されている、多くのソフトウェアアプリケーションによっても証明される。
これは一般的な機能であるが、多くのソフトウェア配布システムは、これらの相互関係が適切に機能できるようにするのが難しい。これは、アプリケーションのパッケージ化中、アプリケーションのエンドユーザ環境への統合中、または実行時の、相互依存の不適切な解決による可能性がある。
現在、Packaged Software Distribution、Electronic Software Distribution(ESD)、On−Demand Software Distribution、およびMicrosoftからのClickOnceシステムなどいくつかの次世代配布システムを含めて、多くの形のソフトウェア配布が存在する。これらの配布システムのそれぞれは、ソフトウェアがどのように配布されるか、どのようにインストールされ、削除されるか、ソフトウェアがどのようにホストオペレーティング環境および他のアプリケーションと対話するかに関して、いくつかの基本的なパターンを示す。
ソフトウェアの配布
ソフトウェアは、依然としてCD−ROMやフロッピー(登録商標)ディスクなどの物理媒体で入手可能であるが、電子手段の配布は、ほとんどの形のソフトウェアに普及している。企業用に設計された、Microsoft、Marimba、Altirisなど、ベンダーによって提供されるものや、インターネットまたはパブリックアクセスネットワークのために設計されたDigital Riverなどからのものなど、多くの形のESDシステムがある。ESDシステムは、完全にまたは比較的自動化された何らかのやり方でダウンロードし、インストールすることができるインストールパケットの形でエンドユーザおよび企業にアプリケーションソフトウェアを提供する。このソフトウェアの使用では、競合する従属関係や他の誤構成など、インストール問題をしばしば引き起こしていた。
他のソフトウェアベンダーは、それが使用されるとき、または「要求に応じて」、ソフトウェアの配布のためのシステムを開発してきた。これらのシステムで、アプリケーションパッケージは、必要に応じて、ソフトウェアの使用を必要とするエンドユーザシステムに配布される。次いで、ソフトウェアを、実行中に対象のシステムにインストールしたり、そこから削除したりすることができ、または一部の場合、「仮想でインストールされ」、それによってソフトウェアは、事実上インストールされていないとき、まるでインストールされているかのように、エンドユーザのシステム上で実行される。仮想インストール技術は、まるでインストールされているかのようにアプリケーションが稼働することを確実にするが、アプリケーションをオペレーティング環境および他のアプリケーションから隔離している。
Microsoft ClickOnceやSunのJava(登録商標) Management Frameworkなど、いくつかの他の技術が市場に提供されている。これらのシステムの多くでは、ソフトウェアのインストールの問題は、概念上、ソフトウェアのインストールがそのホスト環境を変更することを防ぐことによって、未然に防止される。これは、任意の準拠するソフトウェアに、構成ファイルなど、無害な内部ソースからその構成のすべてを集めることを要求することによって、また任意のシステム全体のレジストリや他のアプリケーション構成エンティティを使用することになく、行われる。また、ソフトウェアは、ホストオペレーティングシステム内の設定を要求したり、そのホストを任意の方法で変更したりすることから制限される。
一般に、変更をまねるが、実際にはそれを行わない仮想インストールを介して、または自己完結型ソフトウェアの作成による環境の変更の制限を介して、ソフトウェアは、そのホスト構成の変更によって対象のオペレーティング環境にインストールされることがわかる。これらのシステムにおいて、ソフトウェアの削除は、それがどのようにインストールされたかに関連する。普通にインストールされた場合、ソフトウェアは、逆の手順またはアンインストールプログラムによって取り消されなければならない。これらのプログラムは、故障し、ホスト環境に損害をもたらすことが多い。仮想インストールシステムでは、ソフトウェアは、決してインストールされず、したがって、削除の必要がない。自己完結型環境の場合、削除は、非侵入にすることもできる簡単なアンインストール手順を確実にすることによって、簡略化される。
統合問題
記述したすべてのシステムおよびソフトウェアの実行のための任意のシステムにおいて、そのホスト環境および/または同じ環境においてインストールされるまたは実行される1つまたは複数の追加のアプリケーションとの1つまたは複数のソフトウェアアプリケーションの可能な対話を特徴付け、容易にする方法に関する問題が存在する。多くのアプリケーションは、一緒に働き、相互通信するように設計されているか、そのホスト環境を変更することによって動作するように設計されている。アプリケーション間の関連付けの他のモードは多数あり、問題はすべてまたはほとんどの既知のモードに広がっているが、本明細書に記載されたものは、単に、対処すべき問題の事例として使用されているだけである。
互いに協働するように設計されているアプリケーションは、通常、いくつかのパターンのうちの1つに従う。まず、多くのアプリケーションは、他のアプリケーションが「プラグイン」するホストである。この例には、サードパーティソフトウェアベンダーが主なアプリケーションへの拡張を作成する機能を提供するAdobe PhotoshopやAutodesk AutoCADがある。このプラグインの存在下で、Photoshopユーザインターフェイスは、プラグインによって提供された新しい機能を含んでおり、エンドユーザにとっては異なるように見える。エンドユーザの目に見える変更に対する要求はない。これは単に、一般的なプラグインの1つの動作モードである。
あるいは、一部のプログラムは、公式に登録されていないプログラムのインターフェイスを活用することによって、またはそうでない場合、元のベンダーはそれを意図していないが、その実行時の挙動を変更することによって、「プラグイン」の見かけをまねることができる。プログラムおよびそのユーザインターフェイスを別のものに組み込むなど、他のソフトウェアプログラムの周りにラッパを提供するプログラムがいくつか存在する。ラッパ内でいくつかの機能が選択されると、ホストは、何らかの仕事を行うように、もう一方のアプリケーションを駆動させることができる。これは、もう一方のソフトウェアアプリケーションをホストするのではなく、単にユーザの要求によってそれを開始させる「ランチャ」プログラムの作成によるなど、疎統合とすることもできる。
いくつかのアプリケーションは、他のアプリケーションを使用して、その仕事の一部を実行する。PDAアプリケーションなどのソフトウェアは、連絡情報を同期するデータリポジトリとしてMicrosoft Outlookなどの連絡先マネージャ(contact manager)を使用する。Outlookは、PDAアプリケーションの一部として出荷されるのではなく、ソフトウェアは、それと通信して、その同期タスクを行うことができる。多くのプログラムは、Microsoft Wordを使用して、メールマージ機能を行う。
また、プログラムは、仕事を行うために、標準の手段、またはメーカー独自の手段を介して互いに通信することもできる。これは、COM/DCOM、MTS、CORBA、SOAP、または他の手段を介した遠隔手続き呼び出し(RPC)などの何かとすることができる。これは、生のTCP/IP通信セッション、さらにはHTTP要求などの何かとすることができる。ここで当面の主な問題は、相互通信の可用性が、主なアプリケーションが挙動する方法を変更することができることである。一例として、パケットダンパまたは通信トラブルシューティングプログラムは、多くの異なる通信プロトコルを見て、フォーマットすることができることが多い。しかし、CORBAを使用する環境にない場合、そのプロトコルを構成する必要はない。この構成は、そのホストまたは近くのホストがこのプロトコルを使用するように構成されているかどうかを検出することによって、行うことができる。
プログラムは、データファイルまたは共通データベースの共有を介して緩やかに相互運用することもできる。これは、簡単なファイル共有またはOLEやOpenDocなどの複合文書インターフェイスを介し得る。複合文書の場合、特定の複合文書は、その内部文書構造の様々な部分をホストすることができるソフトウェアアプリケーションの存在および統合に依存する。データベースシステムの場合、結合は、非常に疎であることが多いが、依然として、統合をもたらすために何らかの構成が存在する必要がある。
最後に、多くのプログラムは、異なるように構成された類似のオペレーティングシステムの存在下で異なるように動作したり、特定のホストオペレーティング環境または他のソフトウェアアプリケーションを構成する目的を有したりすることができる。簡単なプログラム例は、TweakUIであり、これは、Microsoft Windows(登録商標)デスクトップ環境の構成およびオペレーティングシステムの他の多くの側面を変更するために使用されるプログラムである。
上述した場合のすべてにおいて、ソフトウェアアプリケーションは、それらの世界観が単独であると推定しているか、他のアプリケーションまたはホスト環境の存在下で意図的に異なるように機能する。これは、説明したソフトウェア配布システムの問題を提供し得る。ほとんどの場合、考え得る関連付けのすべてが、配布時またはインストール時に知られているわけではない。したがって、配布システムは、変更に適合する手段を提供する必要がある。
いったんアプリケーションが配布用に構成されると、環境が変わった場合、アプリケーションをしばしば再構成しなければならない。さらに、構成中、そのすべての関連付けを知っておかなければならず、そうでなければ、適切に構成されないかもしれない。仮想インストール環境の場合、デフォルトの挙動は、意図的に任意のプログラム接続を分離することである。したがって、この制限を克服する手段が提供されなければならない。または、自己完結型環境の場合、コンテナパラダイムを侵害しない、関連付けの妥当な手段を見つける必要がある。
可視性/発見可能性(DISCOVERABILITY)
2つのアプリケーションが相互運用するには、ある時点で互いに可視でなければならない。これは、インストール時または実行時の発見の手段を介するもの、またはこうした時にもう一方から見える一方のプログラムの何らかの明示またはインターフェイスによるものとすることができる。
プログラムは、互いを見つけるために非決定的手段や公式に登録されていない手段を使用することが多いため、可視性の問題は、かなり複雑であり得る。例えば、統合すべきアプリケーションの存在を探すことによって、存在を決定することができる。これは、その実行可能な構成要素のうちの1つまたは複数を検索する、Windows(登録商標)レジストリなどの共通レジストリ内でその構成を検索する、UNIX(登録商標)の/var/optや/etcのファイルシステムの場所における実行ショートカットやその構成など何らかの共通場所内でアプリケーションの形跡を検索する、共通場所にあるそのインターフェイスのうちの1つまたは複数を検索する、その存在についてそのホストオペレーティング環境に対してクエリを行う、または多くの代替の手法のうちの1つによって行うことができる。
仮想インストール技術などのシステムでは、検索のこれらの手段を介した発見は、プログラムが当該のホスト上で実行されるように構成されている場合でも、機能しない可能性がある。仮想インストール技術では、ホスト環境上にプログラムの形跡がない。アプリケーションをホストに配信するように構成されているサーバに、その可用性の知識のみが存在する。また、一部の仮想インストールシステムは、デスクトップシステムのようなものにホスト統合を提供し、したがって、アプリケーションがこのようにその発見を行うように構成されていない場合でも、この1つの形の発見のみを実行可能にする。仮想でインストールされたソフトウェア構成要素は、デフォルトでは、実際のソフトウェア自体以外のものからは決して見えない。したがって、発見が行われるには、容易にするために代替手段を提供する必要がある。
自己完結型環境の場合、ホスト環境内のソフトウェア構成要素の実際の明示は、かなり変わり得る。Microsoft ClickOnce技術は、例えば、システムの残りから隠されている、またはその存在の過程にわたって変わり得るホスト環境内のある場所に、ソフトウェアアプリケーションの実行可能な構成要素を配置することができる。
発見は、ソフトウェアの中央または分散レジストリを介して行うこともできる。UDDIまたはJNDIなどのシステムは、インターフェイスレイヤでのソフトウェアアプリケーションの発見の手段を提供する。UDDI内のレコードの存在は、予め定義されたまたは動的なエンドポイントでのソフトウェアの可用性を含意する。仮想インストール技術では、このエンドポイントが仮想インストール環境内のみに存在することが多いので、環境内のUDDIクエリはアプリケーションの存在を解決するが、環境外では解決しない。あるいは、UDDIやJNDIクエリは、単に仮想アプリケーションのプロキシである動的なエンドポイントに解決する。
発見の問題は、インストール時およびインストール後に変更によってさらに複雑になる。あるアプリケーションは別のものと統合できるマシンにインストールされているが、第2のアプリケーションがインストールされていない場合、それ自体を相互運用するように構成できない場合がある。第2のアプリケーションが引き続いてインストールされる場合、相互運用を構成する論理は、第1のソフトウェアアプリケーションのインストール時に行われるだけであることがしばしばである。したがって、統合を提供するために、第1のアプリケーションを再インストールする必要がある。
さらに、アプリケーションが第2のアプリケーションと統合するように構成されており、その第2のアプリケーションが削除される場合、第1のアプリケーションは、削除プロセスの再構成または処理を行うことができなければならない。実際にみると、そうでないことが多い。第2のアプリケーションの削除によって、第1のプログラムが故障するか、そうでない場合、不完全にふるまう可能性がある。
また、アプリケーションの存在は、実行時に決定され、アプリケーションへの挙動の変更をもたらすこともあり得る。ソフトウェアアプリケーションは、別のプログラムを、既知のインターフェイスでそれに話しかけようとすることによって、ホスト上で稼働しているそのプロセスを探すことによって、そのアプリケーションウィンドウの1つまたは複数を見つけることによって、またはMTS、CORBA、DCOMなど、ブローカサービスを使用することによって検出することができる。
相互通信
アプリケーションは、いったん相互運用するように構成されても、相互接続する手段を依然として有していなければならない。通常の単一ユーザ実行環境では、実行を失敗させるホスト構成において何かが変わっていない限り、これは、ほとんど問題ではない。しかし、仮想インストール環境、マルチシステム環境、またはマルチユーザシステムにおいて、相互接続は、追加の構成なしに適切に動くことができない。
オペレーティングシステムガードの通常の動作モードでは、既存の何らかのエンドポイントとの競合の可能性を取り除くために、デフォルトの通信エンドポイントが再対象化される。したがって、1つのアプリケーションが別のものと通信しようと試行するとき、両方のアプリケーションが存在し、互いについて知っているように構成されている場合でさえ、通信が失敗する。これは、各通信エンドポイントが異なるように再対象化されることのシステムによる保証の結果である。したがって、オペレーティングシステムガードは、通信セッションが適切に接続し、動作することを確実にするために、再対象化するプロセスを調整するために、システムを提供しなければならない。
マルチユーザ環境でも、問題は同様である。プログラムが同じホスト上の複数のユーザによって使用される予定である場合、通信エンドポイントは、ユーザごとに可変であり、ユーザごとに同じように再対象化されなければならない。Microsoft Terminal ServicesまたはCitrix MetaFrameでは、セマフォおよび相互排除などの通信エンドポイントは、端末セッション内で一意であるようにすでに書き換えられるが、単一のセッションでの同じプログラムの複数のインスタンスは、依然としてこの問題を顕著に示す可能性がある。さらに、ソケット、COM、名前付きパイプなどの標準通信は、一貫してマシンにグローバルであり、どんな方法でも変わらず、したがって、問題がもたらされる。
オペレーティングシステムの統合
現代のソフトウェアのほとんどは、何らかの方法でそのホストオペレーティング環境と統合するように設計されている。デスクトップクラスソフトウェアは、一般に、プログラムショートカットまたはソフトウェア製品にアクセスするための他の簡単な手段を提供する。これらのショートカットによって、オペレーティングシステムは、製品を稼働させるためのユーザインターフェイスを表示することができる。ほとんどの場合、サーバクラスソフトウェアは、管理および簡単な起動/停止構成のインターフェイスを提供する。
すべての場合、ホストオペレーティングシステムは、インストールされたソフトウェアにアクセスするための何らかの手段を提供する。ほとんどの場合、Windows(登録商標) Shellや、UNIX(登録商標) CDE、KDEなどのデスクトップシェルは、ソフトウェアの共通のルックアンドフィールおよび統合ポイントを提供するために使用される。これらのタッチポイントと統合するために、正しい手段でそのソフトウェアをインストールすることは、ソフトウェアベンダーの責任である。これらのインターフェイスの中には、ショートカットのようなものの場合、簡単なものもあり、ユーザによるマウスの右クリックのときに使用されるコンテキストメニューなど、より複雑なものもある。
また、共通のコマンドまたはユーザインターフェイスをソフトウェアおよびハードウェアを管理するために使用できるようにする管理インターフェイスもある。Microsoft Management Console、Microsoft Windows(登録商標) Installer、Linux rpmデータベースなどの物は、オペレーティングシステム内の管理情報を見つけるための共通の場所を提供する。
また、追加したり削除したり、仮想的にインストールしたり、そうでなければ要求に応じて提供されたりすることができるソフトウェアがある状態で、これらのインターフェイスは、動的であるか、動的に管理できなければならない。オペレーティングシステムの操作挙動は、そのアクティブなアプリケーションの性質を反映するようにされる。
バージョン管理
統合および相互運用の問題は、ソフトウェアプログラムまたはそのインターフェイスの複数のバージョンの存在によってさらに悪化する。2つのプログラムが通信でき、プログラムのうちの1つが複数のバージョンを有している場合、プログラムのどのバージョンを使用すべきであるかを知るための手段がなければならない。一般に、プログラムの1つのバージョンのみが、呼び出しプログラムと共に正しく動作する。このようなやり方で、2つのプログラム間に従属関係が存在することが知られている。しかし、両方のバージョンのプログラムが正しく動作する場合、従属関係は、バージョンの独立性を示すような方法で、明確に表現されなければならない。
Microsoft COMアーキテクチャなど多くのシステムは、プログラムが相互通信するためのバージョン管理されたインターフェイスを提供する。このシステムで、プログラムインターフェイスに、グローバル一意識別子、すなわちGUID、およびそれ自体を識別するために使用する1つまたは複数の名前が与えられる。さらに、プログラムに、バージョンに依存しない識別子を与えることができる。この識別子は、プログラムが、プログラムのバージョンに関わらず、それと通信することができることを含意する。
実際に、これらのタイプの識別子は、実際にバージョンの従属関係が存在するとき、誤って使用されることが多い。初心者のプログラマのほとんどは、バージョンに依存しない識別子を使用すれば、常に識別子は探しているものに解決すると考えている。このことから、従属ソフトウェアの最新バージョンと常に正しく機能する必要性は、構築されたプログラムにある。従属ソフトウェアが変更され、バージョンに依存しないインターフェイスが存在するにも関わらず、もはや互換性がない場合、問題が起こる。これらの誤りを解決することは、ソフトウェア配布システムに任されるが、解決できないことが多い。
あるいは、多くのプログラムは、バージョンに依存するまたは依存しないインターフェイスを有していないが、それにも関わらず、テストまたは一般的な方法を介してのみ理解されるバージョンの従属関係を有する。別のユーザインターフェイスを駆動させるプログラムは、そのWindow制御は固有の物理位置にあるか、特定のクラス名を有すると予想することが多い。同じプログラムの別のバージョンは、これらの予想に従わないかもしれない。この場合、駆動中のプログラムは、第1のバージョンのソフトウェアを正しく使用することができるだけである。
この問題の逆も存在する。別のプログラムを駆動させる、またはそれと通信する必要があり、Windowクラス名など、特定のエンドポイントを使用することによってのみそうするようにできるプログラムがある場合、駆動されるソフトウェアの別々の2つのバージョンが、実際に同じエンドポイントを使用する可能性がある。この場合、駆動中のプログラムが、所望のエンドポイントで、ソフトウェアの正しいバージョンと通信することができ、しかし依然として、同じエンドポイントを使用してソフトウェアのもう一方のバージョンの操作を容易にすることができる必要がある。
命名
上述したような問題の重要な部分は、名前を理解するという基本的な問題である。名前は、多くの形があり、様々な状況または「コンテキスト」で非常に異なる多くの物であり得る。
コンピュータシステムでは、ほとんど何でも名前付きのオブジェクトとすることができる。ファイルは、「C:\Windows(登録商標)\notepad.exe」という名前を有する。レジストリキーは、
「HKLM\Software\Microsoft\Windows(登録商標)\CurrentVersion\Run」である。名前付きパイプは、\\PIPE\ExamplePipeである。フォントは、「Tahoma Bold」である。HTTP通信のTCPポートは、80である。データベース内のテーブルの名前は、USERSである。グローバル一意識別子、すなわちGUIDでさえ、基本的に、何らかのオブジェクトの名前である。実用上、他の多くのオブジェクトは、それらの名前を有意にするような方法で命名される。ニュース記事のタイトル、ニュース記事の筆者、またはその出版社である。
オブジェクトに名前が付けられると、そのオブジェクトを見つけるために、提供された名前を使用するという暗黙の了解がある。2つのオブジェクトが同じ名前を有する場合、当該の適切なオブジェクトを解決する何らかのプロセスが提供されなければならない。別々のアプリケーションが共通のオブジェクトの使用を試行する場合、通常、アプリケーションは、その単一のオブジェクトを解決する。しかし、1つのアプリケーションがそのオブジェクトを変更する場合、その変更されたオブジェクトをもはや第2のアプリケーションに使用させないようにすることが望ましいことが多い。したがって、各アプリケーションは、同じ名前を使用する異なるオブジェクトを解決するための方法、および変化するオブジェクトを追跡する方法を有する必要がある。
さらに、名前付きのオブジェクトが存在し、その同じオブジェクトが仮想的にインストールされたアプリケーション内に存在する場合、仮想アプリケーションは、その内部オブジェクトを解決することによって動作するが、仮想環境外のプログラムでは、仮想オブジェクトを見つける必要が依然として残る。
したがって、アプリケーションおよびオブジェクトが可変の寿命、それらの寿命にわたる異なる意味、および潜在的な衝突を有する可能性があるネットワークでは、これらのオブジェクトの対話を管理するために、統一ソリューションが必要である。JNDIまたはUDDIなどの現在の技術分野のシステムは、これらの特徴を反映しない絶対情報を提供するために、情報のシステム全体のレジストリに依存する。JNDIクエリは、接合点を作成することによって異なる名前空間を一体化することができる。しかし、システムのユーザは、単にそうしないことによって命名の衝突を処理することが要求される。実際には、これは、その仕事を行うために、多くのシステムがオブジェクトの共通の、しかし異なる定義を有していなければならないため、非常に難しい。JNDIシステムは、名前空間を折りたたんだり、マージしたりする手段や、バージョン管理または競合管理の制御の手段を提供しない。
コンテキスト
上記で提供された問題は、当面のシナリオの文脈で、適切な構成、名前付きオブジェクト、またはインターフェイスを提供する機能の存在下で解決される。本明細書に記載した実施形態は、a)ソフトウェアプログラムの相互依存性を自動的に理解し、b)プログラムがそのホストオペレーティング環境の類似のビューを共有し、かつ/または変更することができる操作コンテキストを作成し、c)これらのコンテキストの使用可能化またはプロパティを制御し、d)そうでなければ故障するこれらのプログラムの相互接続および相互運用性を容易にするシステムを示す。
実施形態は、ホストオペレーティング環境において1つまたは複数のプログラムを作動させ、制御されたやり方で複数のシステムの挙動を連結する方法を提供する。図5に示したシステム例150において、1つまたは複数のコンピューティング装置が存在し得る。これらの装置は、オペレーティングシステムおよび1つまたは複数のアプリケーションが実行される、単一のユーザ155またはマルチユーザ156装置とすることができる。また、サーバシステム状のデータベースサーバ、ファイルサーバ、または他の事業区分別アプリケーションサーバなどのインフラストラクチャサービス158、またネットワークおよびシステムを管理する一部のインフラストラクチャ157も存在し得る。
ソフトウェアアプリケーションは、装置のネットワーク内で実行されるとき、したがって、いくつかのレベルの他のソフトウェアと対話できる機能を有する。好ましい実施形態において、基本レベルは、グローバル、管理、ローカルシステム、システム仮想、ベンダー、ユーザ、セッション、共有、および隔離を含む。これらのレベルは、図6および図7に示されている。これらの分類は、コンテキストと呼ばれ、環境間対話のポリシーベースの制御を可能にするためにその中で拡大された、アプリケーションが実行するランタイム環境に対応する。当業者であれば、他のコンテキストを簡単に作成することができ、本明細書で定義されたものは、本発明の用途の例であるものとすることを理解されよう。
Globalコンテキスト201は、図5に示されている一実施形態におけるシステム全体のビューである。グローバルコンテキスト内に存在するオブジェクトまたは名前は、セキュリティポリシーによって許可されるように、すべてのユーザおよびすべてのソフトウェアプログラムによって閲覧し、共有することができる。代替実施形態において、グローバルコンテキストは、会社のすべてのマシンをカバーする企業コンテキスト204、会社間の共有の計算のための連合コンテキスト(Federated context)206、および参加しているすべてのエンティティをカバーするグローバル201または分散コンテキストをカバーするように変更することができる。
管理コンテキスト207は、管理のある範囲内の1組のマシン、ユーザ、リソース、および/またはアプリケーションの広範なビューである。この範囲は、ESDソリューションまたは仮想インストールシステム214のうちの一方など、配布システムによって管理される1組のシステムとすることができる。これは、企業範囲にわたって部門内に拡張することができ、または管理システムがASPなどのサービスプロバイダ202によってホストされる予定である場合、このコンテキストを、プロバイダのカスタマシステム204、205にわたって広げることができる。このコンテキストは、本発明の方法を実施する任意のシステムが他の管理システムおよびそれ自体の他のインスタンスと相互運用することができるように存在する。
ローカルシステムコンテキスト302は、特定のマシン301または仮想マシン(VMWareパーティションなど)内のすべての操作のビューを提供する。これは、Microsoft Terminal Servicesの「グローバル」コンテキストに等しい。CitrixおよびMicrosoftの従来技術のシステムは、マシンをグローバルおよびセッション固有の名前空間に再分割することによって、これらのコンテキスト問題の一部を解決しようと試みていた。
システム仮想コンテキスト310によって、仮想インストール技術によって配信されるものなどのプログラム、またはオペレーティングシステムガードは、操作およびオブジェクトをローカルオペレーティングシステムと共有して、両方が同じ名前空間内で動作するようにすることができる。特定のシステム仮想コンテキストは、1つまたは複数のアプリケーションをオペレーティングシステムとカプセル化する。すべてのアプリケーションがOSと同じように共有する必要はない。
ベンダーコンテキストによって、マシン内に存在するが、そのソフトウェアまたはハードウェアを使用するシステムに関連するすべての操作を含む範囲を、ソフトウェアベンダーは作成することができる。一実施形態における一例は、同じマシン上の他のソフトウェアと共存するシステムによって管理されるソフトウェアである。ベンダーコンテキスト内で、ソフトウェアは、管理されているもの、および管理されていないものに基づいてグループ化される。
ユーザコンテキスト211は、操作をユーザによって行われる操作にグループ化する機能を提供する。このコンテキストは、単一のマシン上に存在するように制限されないことに留意されたい。このコンテキストを、このユーザの代わりに操作を実行している複数のマシンまたはセッションにわたって広げることができる。この挙動によって、ネットワークで複数のセッションを稼働させているユーザは、実行しているアプリケーション間の協調を図ることができる。
セッションコンテキスト212は、操作を、1つのマシン上での1人のユーザの操作に制限する。これは、Terminal Servicesのローカルユーザの名前空間、またはUNIX(登録商標) telnet/ttyセッションに相関し、マシンにログインされたユーザは、識別可能な範囲を有することになる。
図7に示されている共有コンテキスト312は、管理上定義された一意の共有構成依存範囲を提供する。この範囲によって、2つ以上のプログラムは、構成およびオブジェクトを共有したり、互いに見たりすることができる。このシステムの好ましい実装形態内に、複数の共有コンテキストがある。各コンテキストは、名前、および共有の挙動を定義する1組のポリシーを含む。このように、アプリケーションの複数の異なるセグメントは、重複する挙動を共有することができる。
図7に示されている隔離コンテキスト311は、仮想的にインストールされたアプリケーションのデフォルトの挙動である。この範囲内で、アプリケーションは、すべての他のプログラムから完全に隔離され、ある意味で不可視であり、すべての通常のインターフェイスおよび名前付きオブジェクトは、コンテキスト外に存在しない。
これらのコンテキスト例は、本発明の実施形態が設計上明示的に階層的であることがどれほど必要ないかを示している。オペレーティングシステムガードは、オペレーティングシステムと個々のアプリケーションとの間、およびアプリケーション間のレイヤとして動作するが、アプリケーションまたはコンテキストが階層的に層状にされるという制限はない。この効果は、容易に達成することができるが、本発明のシステムは、ネットワークまたはシステムアーキテクチャによって制限されない1からn個の環境を連結することができる。これによって、示したように複数のマシンにまたがることができるUserコンテキストなどのコンテキストを検討することができる。
操作上の特徴
一実施形態におけるシステムは、ホストオペレーティングシステムとの、相互の、およびオペレーティングシステム内のプログラムの通常の通信をインターセプトするソフトウェアレイヤとして設計される。代替実施形態において、システムは、このシステムの機能を利用するのを特に可能にされるプログラムへのコンパイルのためのコードライブラリとして実施される。次いで、個々の各アプリケーション要求は、その特定の操作コンテキスト内で評価され得る。システムは、ファイルシステム要求、レジストリ要求、共有オブジェクト、フォント、コードライブラリなど、すべてのタイプの要求を見る。これらの要求は、通常、一律にリソースと呼ばれる構成項目、名前付きオブジェクト、または通信インターフェイスのためのものであるが、これらに限定されない。リソースは、可変の寿命を有しており、その使用の期間を超えて持続される場合も、されない場合もある。
図8に示されているシステムでは、互いのリソースおよびオペレーティングシステムを使用する2つのアプリケーションが示されている。異なる3つのシナリオが示されている。1つのシナリオでは、プログラム、Application A 402が、単独でのみ使用するために構成されたリソース、Resource Set 1 404を使用しようと試みる。別のシナリオでは、Application A 402が、別のプログラム用に構成されたリソース、すなわちApplication B 403用に構成されたResource Set 3 406を使用しようと試行する。また、最後のシナリオでは、両方のプログラムが、各プログラムによってアクセスされるように構成され得る共有リソース、Resource Set 2 405にアクセスしようと試行する。この図は、米国特許第09/859,209号明細書「Operating System Protection and Abstraction Layer」の図に機能的に等しいが、プロセスを明確にするように示されている。
この図は、システムの基本的な前提を示し、それによって、1つまたは複数のリソースは、1つのアプリケーションに専用であるように構成することができ、またはそれらのリソースを共有することができる。共有は、1組の共有ライブラリなど、1つまたは複数のプログラムから使用可能な一塊のリソースとして行うことができる。また、一方のプログラムがそのリソースを別のプログラムと共有できるようにするために実行することもできる。逆に、プライバシは、あるプログラムのリソースが別のプログラムから使用可能ではないことを確実にする。いかなる場合でも、中間レイヤは、共有操作を許可する、または不許可にする、そうでない場合は、操作を代替コンテキストに転送する役割を果たす。
本発明の一実施形態では、各組404、405、406でのリソースは、別々の名前空間コンテナオブジェクトに格納される。これらのオブジェクトは、名前空間タイプとコンテキストとの組み合わせのための分離可能なストレージを可能にする。名前空間コンテナの一例は、Microsoft Officeのユーザの個人設定(ユーザコンテキスト)のファイルシステムコンテナである。これらのコンテナによって、各組み合わせに適した、局限され、独立したやり方でリソースを格納するが、次いで現在のシステムの機能によって動的に正しい名前空間に入れることができる。リソースは、名前空間コンテナ、または単に適切なリソースまたは名前付きオブジェクトを再作成するのに必要なメタデータで維持することができる。
多くの形のストレージ、データ構造などを使用して、この機能または均等物を達成することができることを理解できる。例えば、名前空間コンテナは、ローカルまたはネットワークファイルシステムに格納されているリソースセットに関連付けられているすべてのデータおよびメタデータを含む単一のファイルとすることができる。別の実施形態例では、名前空間コンテナは、基礎を成すまたはリモートのシステムに要求を転送するプロキシオブジェクトとすることができる。
本発明のシステムでは、相互運用の3つの基本的なモデルがある。1つのアプリケーションがリソースサービスを別のアプリケーションに提供することができるProducer/Consumerモデルである。このモデルの特徴は、1つまたは複数のプログラムが、相互交換の必要なしにリソースまたはサービスを提供するために、別のプログラムに依存し得る一方向の関連付けである。このモデルで、消費者は、アクセスを制作者の必要な統合ポイントに制限される。したがって、制作者の環境および名前空間コンテナは、一般に、消費者からアクセスできないが、代わりに、構成されたリソースまたはプログラムに基づくインターフェイスのみが許可される。このモデルの一例として、Great PlainsがMicrosoft Excelを使用して、それが保持する会計データからスプレッドシートを生成するなどの機能のためにMicrosoft Officeなどのプログラムを一般的に使用することが挙げられる。ExcelおよびGreat Plainsは、独立したプログラムとして有用であり、機能的であるが、共にこの機能を追加することができる。Great Plainsは、単に、プログラマティックにExcelを駆動する必要があるだけであり、Excel自体の内部構成または状態にアクセスする必要はない。
第2のモデルは、Peerモデルであり、1つまたは複数のプログラムが協調的にリソースを共有することができる。このモデルでは、共有は許可されるが、変更は、ポリシーによって定義された通りに厳重かつ明確に制御される。ピアの環境およびリソースは、単一の名前空間において1組として共存するように見えるが、本明細書に定義されたポリシーに従って、別々に処理される。このモデルの一例は、共有データベースドライバやMicrosoft Officeプラグインである。一般に、データベースドライバは、マシン上の多くのプログラムによって使用される。適切に機能するために、これらの他のプログラムは、ドライバの構成に関する情報にアクセスできなければならない。
最後に、システムは、従属関係またはコンテキストが定義されていない場合のデフォルトである、共有がない非相互運用モードをサポートする。あるいは、上述したように、このモードに相関する隔離コンテキストを作成することができる。
図8の主なプログラム、Application A 402は、動作しているとき、リソースを要求する。アプリケーション要求のそれぞれは、その関連のコンテキストおよび使用可能な範囲を決定するために、ソフトウェアコアによって評価される。このコアは、詳しくは図9に示されている。要求510が受信されると、コンテキストマネージャ503は、そのソースがプロセスマネージャ504によって識別されることを要求する。
プロセスマネージャ504は、そのホスト上で稼働するプロセス、およびこれらのプロセス505によってとられる操作のビューを保持する役割を果たす。このビューは、親および子のプロセスおよびスレッドのプロセスツリーに相関する。これによって、システムは、どのリソースプールがある特定の作動中のプロセスまたはスレッドのデフォルトであるかの基本的な理解を確立することができる。
現実にはあるアプリケーションから提供されたとき、多くの要求がオペレーティングシステムから来るように見えるため、ソース解決段階は、重要なステップである。この一例は、ファイルシステム呼び出しである。ファイルへの書き込み要求は、オペレーティングシステムによって遅延され、しかしアプリケーションプログラムにとって満たされる場合もある。後で、オペレーティングシステムがディスクへの書き込みをフラッシュするとき、要求は、オペレーティングシステム自体から来る。コンテキスト管理が適切に働くには、この要求を、その発信側プログラムに結合し直す必要がある。あるプログラムがMicrosoft Windows(登録商標) Application Managementサービスなどの別のプログラムの代わりに物事を行うもう1つのケース例が示される。この場合、プログラムは、Windows(登録商標) Application Managementサービスが、その構成要素をホストシステムに登録するなど、何らかのインストールタスクを行うことを要求する。特定の要求のプロセス所有者のみを見るシステムは、このアクティビティがオペレーティングシステム自体の一部であることを決定するか、要求をApplication Management Serviceに結合することになる。しかし、所望の結果としては、サービスが実行されることを要求したプログラムにアクションを結合することである。
本発明の一実施形態の実装形態例で、オペレーティング環境の共通のインターフェイスおよび通信経路が計装される。これらの計装インターフェイスは、ソースコンテキストを識別するのに有用である情報を捕捉するために使用される。上述したように、Windows(登録商標) Application Management serviceの要求インターフェイスは、インストール要求の呼び出し側プログラムを識別するために計装される。このAPI呼び出しの内容は、プロセスマネージャ504に送信されて、将来使用するために格納する。このAPI呼び出しの有効な寿命中、プロセスマネージャ504は、この情報を、テーブル内に保持し、要求の所有者をルックアップする手段として使用する。
要求は、要求オブジェクト510としてシステムを介して送信される。上述したように、このオブジェクトは、それを発信したAPI呼び出しに関連付けられている属性を含む。さらに、要求は、例えば、そのサブシステム、要求タイプ(作成、クエリ、削除など)、対象、および親要求についてのデータを含む。一実施形態では、要求オブジェクトは、要求の各カテゴリ/サブシステムに相関するオブジェクト指向クラスとして実装される。これによって、各サブシステム511は、本発明の他の部分のインターフェイスに影響を与えることなく、要求固有の情報を格納することができる。
解決の探求が受信されると、プロセスマネージャ504は、ソース候補を見つけるために、プロセス、スレッド、およびアクションのそのツリーを検索する。図10に、プロセス識別子(PID)、スレッド識別子(TID)、および状態またはアクションオブジェクトポインタ(SPtr)のリストを含むこのプロセステーブル505が示されている。各エントリは、1つまたは複数のプロセスオブジェクトの親とすることができるプロセスオブジェクトである。親−子の関係は、ホストオペレーティングシステムのものを映す。各プロセスオブジェクト603は、必要に応じて過去のアクションへの参照を保持する状態オブジェクト604へのポインタを含む。好ましい実施形態では、各アクションは、操作、操作データ、および操作を要求したソースプロセス識別子から構成することができる。実際には、例えば操作の結果、成功または失敗およびその結果コード、操作に関するタイミングまたは寿命情報、および操作のセキュリティ資格情報など、他のデータが格納される。
プロセスまたはスレッドがアクションに関連付けられている場合、アクションが現在の要求に一致するかどうかを識別するために、プロセスリストが検索される。前のWindows(登録商標) Application Management serviceの例では、発信側プログラムによるAPI呼び出しによって、Windows(登録商標) Application Management serviceプロセスオブジェクト下に状態オブジェクトが作成される。この状態オブジェクトは、発信側プログラムが要求されたアクションのソースであったことを識別する。ファイルを作成したり変更したりするなどのアクションを行うことによって、Application Management serviceがAPI要求を満たそうと試行したとき、プロセスマネージャは、Windows(登録商標) Application Management serviceのプロセスオブジェクト下で、呼び出しに関連付けられている状態オブジェクトを見つけるが、実際には、そのファイルは、そのサービスを使用している発信側プログラムによって作成されていることを戻す。
要求ソースが理解されると、プロセスマネージャ504は、要求の所有者のプロセスおよびスレッドID、および、これらが同じである可能性はあるが、その真のソースをコンテキストマネージャ503に戻し、そこでその1つまたは複数のコンテキストと一致させる。一実施形態では、コンテキストマネージャ503は、図11に示されるように、システムの使用可能なコンテキストのテーブル、およびコンテキスト間の関連付けを含む。コンテキストは、そのコンテキストタイプ(CType)と共に、基本識別子(CID)を含む。次いで、コンテキスト自体は、機能上の相関関係を使用可または使用不可にする1つまたは複数のポリシーオブジェクト705へのポインタ(PoPtr)を必要とする。ポリシーオブジェクトは、それ自体の識別子、およびマシンサブシステムを識別するマッチニーモニックを含むとともに、リソースの名前空間コンテナおよび名前付きオブジェクトの変換操作などの要求相関パラメータ、および操作を適用するルールを含む。ポリシー例は、例えば書き込み、削除など、ローカルシステム名前空間コンテナに加えられるべき、例えばMicrosoft Wordファイルタイプ(*.doc)などに一致するファイルへの任意の変更である。このポリシーを様々な形で体系化できることを当業者は理解されよう。
このテーブルは、静的および/または動的に構築することができる。というのは、アプリケーションは、システムで使用され、ハッシュテーブル、リストなど、任意の技術を使用して行うことができるからである。アプリケーションが開始されると、アプリケーションの関連のプログラム、名前空間コンテナ、およびコンテキストの関係のすべてを示すために、このテーブルをロードすることができる。本発明のシステムの実施形態によって、コンテキストマネージャ503は、管理インターフェイスを介して、外的にクエリを行い、新しいコンテキストをロードしたり、システム構成の変更に応答したりすることができる。したがって、稼働中のプログラムと同位のアプリケーションが追加された場合、そのコンテキスト情報をライブシステムにロードすることができる。さらに、コンテキストマネージャ503は、これらを他のマシンと共有できるように、その稼働中の、またはロードされたコンテキストを、このインターフェイスを介して外部管理システムに通知することができる。これを別のマシンと直接に行うことができることを当業者は理解されよう。
コンテキストマネージャは、コンテキストの候補リストをポリシーエンジン506に送る。特定のコンテキスト内で要求を解決する必要を決定したり、セキュリティを実施したりするために、各コンテキストのポリシーは、さらに、ユーザ、マシン、またはシステム固有のポリシーに適用される。このプロセスによって、要求をその中で評価するコンテキスト候補の数が迅速に制限される。ポリシーエンジン506については、以下のセクションでより詳しく説明する。
次いで要求は、ファイルシステム、レジストリ、その他のどれであろうと、関連のソース管理サブシステムによって、各コンテキスト内で1回または複数回評価される。次いで、各要求の結果は、コンテキストマネージャによって分析することができ、最終結果は呼び出し側プロセスに戻される。コンテキストマネージャは、その環境テーブルを介して要求を適切なサブシステムにマッピングすることができ、そこで仮想アプリケーションおよびオブジェクト、または管理されているが、完全にそのホストにインストールされ、またはそこで構成されているアプリケーションを追跡する。
実際に、このやり方で管理される必要があるいくつかのクラスの操作がある。それは、読み取り、書き込み、クエリ/ルックアップ、作成、名前変更/変更、列挙、および削除である。他の多くの操作が処理される好ましい実施形態では、処理されたすべての操作の詳細なしに、基本のシステムモデルを記述することがより簡単である。各クラスの操作を別々に処理することによって、システムは、ポリシーを作成することができ、これによって、リソースへの読み取りアクセスは可能になるが、代替リソース、名前空間コンテナ、その他への書き込みアクセスを拒否したり、転送したりすることができる。
読み取り操作では、システムには、読み取り要求を満たすための選択肢がたくさんある。読み取りがファイルに関するものである場合、このファイルは、1つまたは複数のコンテキスト内に存在し得る。評価すべきことを決定することは、コンテキストマネージャの責任である。これはいくつかの方法で対応できることを当業者は理解されよう。要求は、すべてのコンテキストにおいて行うことができ、次いでどの応答を使用するか、または応答をどのように組み合わせるかの決定は、そのルールに従って行うことができる。要求は、使用可能なコンテキストによってフィルタリングでき、どのコンテキストが優先であるかを決定し、そのコンテキスト内でのみ要求を行う。または、一例として、一部の成功基準が満たされるまで、要求は、各コンテキスト内で連続的に評価することができる。読み取り操作の場合、成功は、読み取り操作のデータをサポートするコンテキストの機能によって示されることができる。
また、コンテキストマネージャは、あるパターンに従い、全解決段階を必要としない共通の要求を行うために、その解決処理の結果をキャッシュすることもできる。さらに、コンテキストマネージャは、コンテキストのハッシングを介してクエリを配布することができる。このハッシングプロセスによって、システムは、完全な操作クエリを行うことなく、迅速にそのテーブルに対して照会を行い、他のテーブルに対してクエリを行うことができる。
上記の例のファイルを1つのアプリケーションプログラムのコンテキストから読み取ることができ、しかし、それが書き込まれる場合、実際の書き込み操作が別のコンテキスト内で行われる場合、コンテキスト手法の重要性がわかる。システムのこの挙動は、2つのシステムが互いに相互運用し、しかし依然として互いに分離され、または独立したままであるようにすることができることである。オペレーティングシステムガードの明細書によって記載されているように、オペレーティングシステムの一部であるファイルを、稼働中のプログラムのコンテキスト内で見ることはできるが、プログラムがファイルを変更しようと試行した場合、その変更は、プログラムコンテキスト内で保持することができ、オペレーティングシステムを介してフィルタリングされない。
同じことは、名前変更および削除の操作でも真である。あるコンテキストで削除されるファイルは、別のものに必要である可能性がある。したがって、本発明のシステムは、存在情報および構成だけではなく、例えば、削除および名前変更についての情報の追跡も保持する。
クエリプロセスは、最も単純である。読み取り操作と同様に、これは、グループの優先順位、またはシステムが選択する任意の手段を介して、階層的に実行することができる。しかし、操作の目的は、ハンドルの存在を確認したり、ハンドルを正しいコンテキスト内の名前付きオブジェクトに戻したりすることである。本発明のシステムは、正しいオブジェクトはどれか、それが現在のコンテキストで可視かどうか、およびその範囲をどのように内部で管理するかを決定するために、コンテキストポリシーを適用する。
本発明の一実施形態では、システムは、コンテキストの列挙およびインターリーブドクエリ(interleaved query)を処理することもできる。オペレーティングシステムまたはそのアプリケーション内の多くのデータ構造またはリソースは、ツリー構造をトラバースしたり、システムに一部のリソースの内容のリストを求めたりすることによってアクセスされる。実際には、これらの操作は、コンテキストおよびリソースのインターリーブを必要とする。一例として、アプリケーションは、それに関連付けられているリソースを有し得る。しかし、このリソースは、別のプログラムがそれ自体に関連付けられており、アクティブな場合のみ有効である。
図12に示されるように、リソースは、別のプログラムのリソースツリーに付加することができる。そのため、このリソースについてのクエリ中、システムは、2つの別々の構成の名前空間をインターリーブすることができなければならない。しかし、ポリシーが結合操作を許可しない場合、名前付きオブジェクトへの直接アクセスもそれの列挙も起こらない。図で示される例では、アプリケーション、Application Aは、Windows(登録商標)レジストリキーオブジェクトを表す3つの項目で構成される。オブジェクトHKLM\Software\Drawing Vendor\Photo Editor\Plugins\Pinhead Software\Inline Plugins\Snapshot805は、第2のアプリケーション、Application BがApplication Aと共有されるコンテキスト内で構成される場合のみ存在する。
オブジェクトが実際にApplication Aに存在していてもそうである。項目「Pinheadソフトウェア」802は、Application Aのコンテキストに存在しない場合、取り残され得る。システムは、2次アプリケーションが存在しない限り、それに従うパスがないため、このリソースへの列挙をせず、それへの直接アクセスも行わないように設計されている。さらに、Application Bが単独でインスタンス化される場合、他の802、803下に付属するそのリソースは、同じ理由で存在しない。
名前空間の管理
そのほとんどの基本的な形では、コンテキストは、アプリケーションのリソースを公開するための個別の名前空間、およびこれらの項目に加えられる操作を持続する方法である。名前空間は、一意の名前を識別可能な何らかのリソースにマッピングする領域または範囲である。オペレーティングシステムガードレイヤは、この代替の名前空間を作成し、管理する媒介(intermediary)である。アプリケーションは、この媒介に気付かない。アプリケーションは単に、所与の名前付きのオブジェクトを作成し、後で同じ名前でそれらを参照することができると予想するだけである。このレイヤは、複数の名前空間を管理するが、それらを、実行中のアプリケーション、またはシステムの残りから単一の名前空間に見えるようにすることができる。このように、オペレーティングネットワーク150に提示される単一のリソースは、実際には、様々な異なる名前空間からの複数のリソースによって戻すことができる。
デフォルトでは、媒介レイヤは、ロードする各プログラムインスタンスがプライベートの名前空間を有する隔離コンテキストを作成する。アプリケーションがリソースを作成し、使用するとき、オブジェクト名は、特定のアプリケーションインスタンス内にのみ存在するように局限される。これは一般に、オブジェクトが実際にプログラムの範囲内にのみ存在することを確実にすることによって行われるが、より大きい名前空間内でオブジェクト名をハッシュし、逆プロセスを介して、それを取り出すことによっても行うことができる。このように、別のプログラムは、媒介の機能をリバースエンジニアリングすることなく、その名前空間内に存在しないオブジェクトを要求することができない。
オブジェクトを参照するためにアプリケーションが使用する名前は、一般名と呼ばれる。システム上の2つの別々のアプリケーションは、同じ一般名を使用するが、異なるオブジェクトを参照することができる。この媒介は、正しいオブジェクトに相当するインスタンス固有の名前を作成する役割を果たす。これは、ローカル名と呼ばれる。ローカル名ごとに、さらに、システム全体にわたって一意の絶対名がある。その絶対名を使用したオブジェクトへのすべての参照は、同じオブジェクトを参照する。
一般名は、アプリケーションによって指定される。ローカル名は、そのコンテキスト内で一般名を評価することによって、実行時に媒介によって動的に生成される。システムは、絶対名を生成する必要はなく、プログラムの従属関係およびそのコンテキスト関係に基づいて、そうすることを選択することができる。アプリケーションは、決して絶対名を知らされない。ローカル名を絶対名にマッピングする、正しい一般名をローカル名にマッピングする、またその逆を行うことは、この媒介の責任である。
コンテキストの存在下で、同じコンテキスト内の2つのアプリケーションは、同じ一般名を使用してオブジェクトを作成し、それにアクセスする場合、同じオブジェクトを参照することができる。オブジェクト要求を接続することは、この媒介の責任である。これらの要求を接続する方法はいくつかある。好ましい実施形態では、媒介レイヤは、同じ方法で同じコンテキストでオブジェクト名をハッシュすることを選択することが多い。他のいくつかの操作は、単に、要求を異なる名前のオブジェクトに転送することによって実行することができる。疎接続されたコンテキストにおけるアプリケーションの場合、システムによって使用される機能によって、迅速な検索方法を使用して、オブジェクトを探し、オブジェクト間を関連付けることができる。好ましい実施形態では、名前を迅速に解決するために、ローカル結果キャッシングによる分散ルックアップ(distributed lookup with local result caching)が使用される。
システムの一例では、プログラムは、3つの場所で使用可能なリソースを使用しようと試みることができる。まず、プログラムの1次構成および2次依存構成で使用可能である。また、オペレーティングシステムの一部としても使用可能である。ここでの例では、ファイルMSCOMCTL.OCXを選択する。通常、このリソースは、C:\Windows(登録商標)\System32\MSCOMCTL.OCXの一般名を有する。オペレーティングシステムガードを使用すると、媒介レイヤによって、この名前は、3つすべての構成に存在することができる。すべての構成にとって、オブジェクトの一般名は同じである。
媒介レイヤによって、当該のプログラムは、同じ名前のオブジェクトのコピーを有することができる。さらに、2次構成は、異なる名前を有するオブジェクトを有しているが、その構成において、オブジェクトの一般名がC:\Windows(登録商標)\System32\MSCOMCTL.OCXであることをシステムに伝える仮想化コマンドを指定することができる。これによって、オペレーティングシステムガードは、オブジェクトを、それが実際に使用されている名前空間または格納場所とは異なる別のものの中に格納することができ、実行時にこれらの名前空間をマッピングすることによって、その挙動を表面化させる。
この例では、3つのオブジェクトはすべて、同じ一般名を有する。コンテキスト解決プロセスは、どのオブジェクトが実際の優先順位をとるかを選択する。次いで、システムは、適切に局限された名前を生成し、使用する。この場合、システムは、1次構成のオブジェクトを選択し、そのプログラムインスタンスのコンテキスト内でローカル名をマッピングすることを選択することができる。
コンテキストの範囲がより大きく広くなるにつれて、システムは、名前空間マッピングの作成、クエリ、取り出しを行う名前空間マネージャ508機能を提供することもできる。通常、プログラムが一般名を有するリソースを使用しようと試みるとき、マネージャは、この一般名のリソースを使用して、他のプログラムのそのリストに対してクエリを行うことができる。次いでこれは、追加プログラムのいずれかがコンテキストを共有する場合、コンテキストマネージャによって使用することができる。そうである場合、共有プログラムが同じリソースを使用することを確実にするために、マッピングを行うことができる。これは、同じローカル名の使用を実施することによって、またはシステム絶対名の使用によって行うことができる。これは、特に、マシンの範囲を超えて広がるコンテキストに有用である。
この操作は、名前空間コンテナを取り出し、それに含まれているリソースのメタデータをロードするローダ509の副作用をもたらす可能性があることに留意されたい。リソースは、可変の寿命を有し得るため、名前空間マネージャ508は、コンテナの参照カウント/追跡、ロード、および確定、および一部の場合、推論的仮想化(speculative virtualization)を含めて、リソース管理操作を実施する。
推論的仮想化とは、ファイル、レジストリキー、または他のリソースへの読み取りおよび書き込み操作など、操作中に使用されるプロセスである。リソースが開かれたり、それに対するクエリが行われるとき、システムは、リソースが後で変更されることを想定し、書き込みなどの別の操作がシステムにおいて実行し得るものを決定するために、追加のポリシーを実行することができる。次いで、システムは、前もって、またはバックグラウンドでこれらの操作を実行して、それらが実際に実行される場合にさらなるコストまたは待ち時間を避けることができる。すべての推論的操作と同じく、その後の操作が実行されない場合、システムは、アクションを取り消すことができなければならない。本発明の一実施形態では、システムは、推論的仮想化を使用して、高コストのコピーオンライト操作となり得ることを避けるのを助ける。ファイルが変更されたとき、ファイルが大きい、離れている、またはその両方である場合、コピーオンライトセマンティックは、高いコストを招く可能性がある。この手順によって、コピーオンライトアクションは、バックグラウンドで早期に進めて、操作の実行時のコストを避けることができる。
また、この名前空間マネージャは、システムの管理レイヤ内で動作することもでき、オペレーティングシステムガード内で動作する同じ実際のマネージャであってもよいが、システム全体のクエリに応答するように構成することもできる。または、専用のアプリケーションとすることができる。この管理機能は、構成された絶対名のリポジトリを提供し、絶対名を大規模なコンテキストにマッピングするよう働く。
この名前空間マネージャは、各名前空間内の名前の時間発展を管理することもできる。これは、ハッシュするための標準アルゴリズムが時間変数を含み得るとしても、特定のオブジェクト名が毎回同じ方法でハッシュされることを確実にするために使用することができる。これを行うことによって、時間依存型のコンテキストまたはセマンティクスを操作に提供することができる。さらにこれは、使用を格納し、システム内で情報をマッピングすることによって行うことができる。
過去に、あるインターフェイスでプログラムによってオブジェクトが要求され、同じ名前の新しいインターフェイスが使用可能である場合、この時間依存型の挙動は、システムが古いインターフェイスにマッピングすることを確実にすることができる。これは、デフォルトとしてこのシステムで行われる。新しいインターフェイスにマッピングすることが望ましい場合、新しいバージョンの使用を断定的に断言することができる。複数のバージョンのソフトウェアシステム、および本明細書で検討されているものなどのシステムの存在下で、ソフトウェアシステムの作成者またはマネージャによってそうするように構成されるまさにその方法でリソースの作成および使用を確実にすることができる。
関連の例として、多くのシステムは、DCOM、CORBA、さらにはHTTP RPCなど、分散された関数の呼び出しを使用する。2つのプログラムは、通信を行うことができるように、互いに依存するように構成することができる。プログラムを接続するために使用された一般名は、アドレスおよびインターフェイスを含む。DCOMの場合、分散クエリ、およびそのインターフェイスを公表するそのCOM UIDをホストするマシンがある。ホストは、その一般名をすでにローカル名にマッピングしておいてもよい。リモートプログラムは、ホストおよびUIDをアドレス指定しようと試みるため、システムは、そのローカル名に対応するようにアドレスおよびUIDをマッピングすることができ、または、代替ホストを起動させて、インターフェイスの適切なバージョンが提供されることを確実にすることができる。上述したように、リモートプログラムによって使用される一般名の、ホストによって使用されるローカル名へのマッピングは、名前空間マネージャ内でリソースの絶対名を探すことによって、またはホストシステムの名前空間マネージャに対して、その共通名からローカル名へのマッピングについてクエリを行うことによって、システムによって内部で行うことができる。インターフェイスの2次バージョンが存在する場合、名前空間マネージャは、リモートの起動に適切なバージョンを反映する代替マッピングで応答することができる。
コンテキストポリシー
操作が複数のコンテキストにわたる可能性がある場合を管理するために、適した機構が必要であることを上述した。これらの相互運用の性質は、命名の衝突、優先順位を決定する必要が生じるケース、または変更操作の効果を解決するための状況を招く可能性がある。上記で定義されたコンテキストの存在に対して、システム管理者、または望む場合、エンドユーザまたはソフトウェアベンダーは、操作を制御するためのポリシーを確立することができる。コンテキストのマクロおよびミクロの調整が迅速な構成、しかしきめの細かい制御を可能にする能力を提供することが望ましい。
本発明のシステムの一実施形態は、XMLベースの構成ファイルを介してアプリケーションおよびオペレーティングシステムの相互依存を記述する手段を提供する。ここには1つしか記載されていないが、このプロセスは多くの方法で対応できることを当業者であれば理解されたい。
図8のシステムでは、Application Aは、構成ファイルa.config408を有し、Application Bは、b.config409の構成ファイル、およびc.config410に記述されている共有リソースセットを有する。プログラム間の相互依存を確立するために、<CONTEXT>コマンドは、2つのプログラムが共有コンテキスト内に共存すべきであることを示すa.config408ファイルに入れられる。この例では、コンテキストは、EXAMPLEの名前およびPeerのコンテキスト範囲を有する共有コンテキストである。
システムにおいて、このタグは、それが使用されるには、両方のプログラム記述に必要なわけではない。それが評価されるために、特定のセキュリティ領域内で関連性を有していなければならないことだけが求められる。したがって、別のものと共有できるプログラムは、ユーザが両方のプログラムへの権利を有している場合を除いて、コンテキストを確立しない。
さらに、コンテキストの理解および評価を助けるシステムを提供することができる。一例として、管理コンテキストが望ましい場合、どのシステムがコンテキストに参加するかを理解することをシステムによって求められる。これは、コンテキストの各メンバによって、またはグローバルにシステム全体のサービスによって評価され、このコンテキストを評価するとき、各マシンに提供することができる。これについては、コンテキストマネージャシステムおよびその管理インターフェイスの一部として上述している。本発明のシステムは、ソフトウェアパケットの記述とは別のコンテキスト関係を記述するポリシーファイルを作成できるようにすることによって、この挙動を容易にする。
ポリシーファイルは、システムのデフォルトの挙動を作成したり、システムによって使用するために基本のコンテキストを確立したりするために使用することができる。常に、システムは、ポリシーを、そのサブシステムによって使用するために、そのポリシーエンジンにロードしたり、再ロードしたりすることができる。ポリシーを特定のユーザ、グループ、マシン、または他の関連の構成のみに適用できるようにする追加の修飾子および変数を適用することができる。これらのポリシーの適用を制御するために、任意の数の変形をこの技術に適用することができるが、基本制御は、コンテキストが適用されるかどうか、およびその実行時の挙動が何であるかを決定することであることは理解されよう。また、システム全体にわたってその保全性を確実にし、コンテキスト上の挙動を変更するためにユーザがポリシーを作成するのを避けるために、ポリシーは、デジタル署名することもできる。
個々の構成項目レベルで、システムは、特定のリソースのみがコンテキスト制御に公開されることを指定することもできる。このユーティリティは、2つのプログラムが通信する必要があり、その通信インターフェイスを接続できるだけでよく、しかし、任意の構成の詳細を理解する必要がない場合に非常に有用である。また、これは、別のプログラムを変更するあるプログラムの機能を構成全体のわずかな部分で包囲するのに有用である。この例で、共有リソースセットは、c.configで、リソース\\pipe\testresourceのホストとして働くセッションコンテキストが存在することを宣言している。このリソースセットと同じセッションで稼働している任意のアプリケーションは、この名前付きリソースを使用することができるとともに、HKLM\Software\Test\Valueでその他の構成データを見ることができる。システムの一実施形態において、任意の特定のリソースに名前が付けられた場合、こうしたリソースのみが共有される。そうでない場合、指定がないと、すべてのリソースがコンテキスト指示に従って共有されると暗示されることになる。
ポリシー指示は、操作のクラスの結果を定義するのにも有用である。このタイプの指示の簡単な一例は、Windows(登録商標)レジストリへの任意の変更がユーザの個人設定名前空間コンテナに入るべきであることを宣言するポリシーである。これらのタイプのポリシーによって、特定のアプリケーションだけではなく複数のコンテキストおよび複数の名前空間およびコンテナに適用される相交わる定義を可能にする。
また、修飾子は、各仕様を読み取り専用または読み取り−書き込み可能にすることができるすべてのコンテキスト構成に許可される。デフォルトの挙動は、コンテキスト固有である。さらに、コンテキスト認識の関連付けへの書き込みを可能にする場合、どのコンテキスト内で書き込みが行われるかを識別することが重要である。これについては、後でさらに詳しく説明する。しかし、構成ファイルは、システムの通常の挙動をオーバーライドして、特定の対象を指定することができる。
本発明のシステムによって提供された別の修飾子は、確立されたコンテキストの優先順位をオーバーライドする機能である。任意の特定の関係は、ピア間であると決定することができる。この場合、情報の一部の所有者がその寿命の責任を負うことは自然であり得る。しかし、変更を行ったプログラムがそれ自体内の変更のみを見ることが望ましい。2つのプログラムが共有コンテキスト内にある場合、変更は、このように持続しない。修飾子は、この代替挙動を強要することができる。
コンテキストの決定および制御
システムが実行可能であるために、最適な挙動を決定する何らかの自動化手段を提供する必要がある。デフォルトでは、オペレーティングシステムガードは、プログラムが同じコンテキスト内になるように明示的にパッケージされない限り、それらを隔離コンテキストに存在するように構成する。同じアプリケーション環境下でパッケージされたすべてのプログラムは、その1つのコンテキストを共有する。しかし、上述したように、相互運用可能なコンテキストの作成をさらに自動化することが望ましい。本発明のシステムは、挙動を制御するために、これらのコンテキストおよびポリシーを検出し、構成するためのいくつかの手段を提供する。
アプリケーションのインストール中、システムは、インストールがその対象のコンテキストを直接構成できるようにする。仮想インストールソフトウェアまたはオペレーティングシステムガードの場合、これは、特定のプログラムの隔離コンテキストである。新しい構成環境は、特にインストールされるアプリケーションまたはアプリケーションの組のために作成される。例えば、既存のアプリケーションのコンテキスト内でインストールプログラムを実行するなど、システムに既存の構成要素を増やしたいという望みを示すことによって、インストールは、付加的なやり方で環境内で行うことができる。
ESDシステムを介するなど、標準の手段で配布され、インストールされるソフトウェアの場合、ソフトウェアは、通常、ローカルシステムコンテキストにインストールされる。オペレーティングシステムガードのシステムとは反対に、通常のアプリケーションレベルソフトウェアおよびオペレーティングシステムは、マシン内の同じ場所に存在する。好ましい実施形態のシステムにおいて、ソフトウェアは、インストール時に選択された個別のコンテキストにインストールされるように構成することができる。これは、通常、所望の挙動に応じてベンダーコンテキスト、ユーザコンテキスト、またはセッションコンテキストのうちの1つであるが、使用可能なコンテキストのいずれかとすることができる。一例として、ベンダーのMicrosoftからのすべてのソフトウェアは、Microsoftアプリケーションのコンテキスト内にインストールすることができる。
この方法を使用して、システムは、インストールされたオブジェクトを代替の格納場所に転送し、実行時にマッピングするために一般名を作成することができる。これによって、マシンまたはその黙示のオブジェクト名前空間に損傷を与えることなく、アプリケーションをマシン上にインストールすることができる。また、システムは、対象のマシンへの実際のインストールに先立って構成を作成するために、再対象化されたシステム、仮想マシン、シミュレーション環境、または宛先ホストへのソフトウェアのインストールを可能にすることができる。これによって、実行中に仮想環境を作成することができ、仮想インストールのためにソフトウェアを準備する先験的なステップを必要としない。
先行出願で記載したように、インストールが完了すると、オペレーティングシステムガードは、その構成をダウンロードする。このダウンロード中、構成は、作成パターンについて分析することができる。これらのパターンは、プログラムを計装し、一般的な命名問題からプログラムを取り出すために使用される。一例として、多くのプログラムは、インストールされるときにそれ自体を「個人専用にし」、インストールするユーザまたはプログラムが稼働されるマシンについての情報をその構成に書き込む。このシステムは、これらのローカル名を削除し、それらを一般名に置き換える。または、そのインストール中のプログラムがODBC DSNを作成する場合、ODBCサブシステムの適切なバージョンへの従属関係を作成することがシステムにはわかっている。
これらのパターンは、インストール中にライブで有効にすることもできる。パターンは、アプリケーション固有のテンプレート、または一般の経験則とすることができる。一例は、Microsoft OfficeにインストールするプログラムがHKEY_LOCAL_MACHINE\Software\Microsoft\Officeレジストリキーを検索することである。これらの方法を実施するシステムは、これらのテンプレートを実施するための内部ルール、または1組の構成可能なインストール可能テンプレートを提供することができる。
システムの一実施形態では、Microsoft Officeを検索しているプログラムは、上記の名前付きレジストリキーについてクエリを行う。そのクエリ中、Microsoft Officeソフトウェアがローカルマシン上にインストールされると、プログラムが機能するためにOfficeが存在することを確実にするために、従属関係を新しいソフトウェアパッケージ内で作成することができ、またプログラムがローカルマシン上で互いに可視であることを確実にするためのコンテキストを作成することができる。Microsoft Officeソフトウェアが仮想インストールパッケージの一部である場合、システムは、その名前空間マネージャ内でこのレジストリキーを見つけ、新しいソフトウェアパッケージが相互運用する必要があり得るコンテキストのリストを見つける。次いで、仮想パッケージへの従属関係を作成し、相互運用性のために共有コンテキストを作成することができる。
システムの一実施形態では、使用可能なソフトウェアパッケージは、1つまたは複数のリポジトリに格納される。構成およびコンテキスト情報は、システムのコンテキストマネージャによって容易にクエリが行われる。要求が行われるとき、その要求は、候補のコンテキストおよび従属関係の全リポジトリと照合することができる。Microsoft Office例の場合、システムは、テンプレートを必要としないが、代わりに、Microsoft Officeに対するクエリを、リポジトリ内のアプリケーションから発信しているものと解決する。次いでシステムは、Officeアプリケーションおよびその構成をインスタンス化し、インストールされているプログラムのコンテキストおよび従属関係を作成することができる。
デフォルトでは、システムは、できるだけ制限的になることを試み、できるだけ最小の開いたまたは共有のコンテキストを、共有に必要なリソースのみで構成する。コンテキストポリシーおよび構成を変更するとともに、リソースレベルコマンドを迅速に削除し、パッケージ全体の共有を設定するか、コンテキストを変更するためのインターフェイスが提供される。
本発明の原理を適用できる広範な実施形態を鑑み、示された実施形態は、例にすぎず、本発明の範囲を制限するものとみなされるべきではないことを理解されたい。例えば、フロー図のステップは、記載されているもの以外の順序で行うことができ、より多くのまたはより少ない要素を図に使用することができる。実施形態の様々な要素がソフトウェアに実装されるものとして記載してきたが、ファームウェア実装のハードウェアでの他の実施形態を代わりに使用したり、その逆を使用したりしてもよい。
システムに関与する方法およびコンテキストポリシー制御を介したアプリケーション間の関連付けを制御する方法は、コンピュータ使用可能媒体を含むコンピュータプログラム製品に組み込まれてもよいことを当業者であれば理解されよう。例えば、コンピュータ使用可能媒体は、コンピュータ可読プログラムコードセグメントを格納する、ハードドライブ装置、CD−ROM、DVD−ROM、またはコンピュータディスケットなど、読み取り可能メモリ装置を含み得る。また、コンピュータ可読媒体は、デジタルまたはアナログのデータ信号としてプログラムコードセグメントを運ぶ光、配線、無線などのバスまたは通信リンクなどの通信または送信媒体を含み得る。
他の態様、変更、および実施形態は、特許請求の範囲内に含まれる。
オペレーティングシステムとソフトウェアアプリケーションとの本発明の相対的な関係を図示するブロック図である。 2つのアプリケーションがプライベートコンテキストおよびサービスで稼働している様子を図示するブロック図である。 オペレーティングシステムがシステムリソースの共有ビューを提供する間、2つのアプリケーションが稼働している様子を図示するブロック図である。 オペレーティングシステムガードおよびサブシステムを図示するブロック図である。 システム全体のビューがグローバルコンテキストに対応する本発明の一態様による1つまたは複数のコンピューティング装置を有する複数のシステムを含むホストオペレーティングシステム例を示す図である。 グローバル、管理、ローカルシステム、システム仮想、ベンダー、ユーザ、セッション、共有、および隔離など、図5に関して示されたシステム例の実施形態による異なるコンテキストを示す図である。 グローバル、管理、ローカルシステム、システム仮想、ベンダー、ユーザ、セッション、共有、および隔離など、図5に関して示されたシステム例の実施形態による異なるコンテキストを示す図である。 本発明の一実施形態による、互いのリソースおよびオペレーティングシステムを使用する2つのアプリケーション、およびリソースの3つの異なる構成ファイル示すブロック図である。 本発明の一実施形態による関連のコンテキストおよび使用可能な範囲を決定するために使用されるソフトウェアコアを示すブロック図である。 本発明の一実施形態によるプロセスマネージャによって使用されるプロセスツリーを示す図である。 本発明の一実施形態による、システムの使用可能なコンテキストのテーブル、およびコンテキスト間の関連付けを含むコンテキストマネージャを示す図である。 本発明の一実施形態による別のプログラムのリソースに付加されるリソースを示す図である。

Claims (15)

  1. 複数のソフトウェアアプリケーションおよびリソースの相互運用を制御する方法であって、
    第1のアプリケーションから第2のアプリケーションまたはリソースへの通信をインターセプトするステップと、
    前記通信をコンテキスト管理システムに向けるステップと、
    前記通信用のコンテキスト候補リストを生成するステップと、
    これらのコンテキストのために定義された少なくとも1つのポリシーに従って前記候補リストを評価して、前記通信のために結果として生じたアクションおよび名前空間を識別するステップと、
    前記識別された名前空間内の前記少なくとも1つのポリシーによって定義された通りに前記アクションを行うステップと
    を含むことを特徴とする方法。
  2. 前記第2のアプリケーションの、1つまたは複数のバージョンを追跡するステップをさらに含むことを特徴とする請求項1に記載の方法。
  3. アプリケーションおよび/またはリソース名の進化を追跡するステップをさらに含むことを特徴とする請求項1に記載の方法。
  4. 前記候補リスト上のコンテキストに関連付けられている1つまたは複数の操作を識別するステップと、
    その後の通信の前に前記識別された1つまたは複数の操作を実行するステップと
    をさらに含むことを特徴とする請求項1に記載の方法。
  5. 前記候補リストを生成する前記ステップは、1つまたは複数の分散されたコンテキストからコンテキストを供給するステップを含むことを特徴とする請求項1に記載の方法。
  6. 通信は、プロセス間通信、オペレーティングシステム呼び出し、API呼び出し、およびライブラリ呼び出しのうちの少なくとも1つを含むことを特徴とする請求項1に記載の方法。
  7. コンテキストは、グローバルコンテキスト、管理コンテキスト、ローカルシステムコンテキスト、システム仮想コンテキスト、ベンダーコンテキスト、ユーザコンテキスト、セッションコンテキスト、共有コンテキスト、または隔離コンテキストのうちの少なくとも1つを含むことを特徴とする請求項1に記載の方法。
  8. 前記少なくとも1つのポリシーは、前記ポリシーをいつ適用するかを識別するマッチニーモニック、複数の要求相関パラメータ、および前記ポリシーを適用するルールのうちの少なくとも1つを含むことを特徴とする請求項1に記載の方法。
  9. 他のアプリケーションまたはリソース内で実行されるアプリケーションのための代替名前空間を定義する方法であって、
    一般名のリソースの呼び出しをインターセプトするステップと、
    前記呼び出しの対象の名前空間を識別するステップと、
    前記一般名をその名前空間内のアプリケーションによって使用可能なローカル名に変換するステップと、
    そのローカル名によって識別される前記リソースへのアクセスを提供するステップと
    を含むことを特徴とする方法。
  10. アプリケーションの、1つまたは複数のバージョンを追跡するステップをさらに含むことを特徴とする請求項9に記載の方法。
  11. アプリケーションまたはリソース名の進化を追跡するステップをさらに含むことを特徴とする請求項9に記載の方法。
  12. 前記ローカル名によって識別された前記リソースへのアクセスが、代替名前空間における異なるローカル名によって識別されるリソースに対して容易になりうるように、前記ローカル名を絶対名に変換することもできることを特徴とする請求項9に記載の方法。
  13. 前記対象の名前空間を識別する前記ステップは、1つまたは複数の分散されたクエリを含むことを特徴とする請求項9に記載の方法。
  14. 前記対象の名前空間についての少なくとも1つのクエリは、1つまたは複数のシステムに共通する名前空間を追跡する管理システムに対して行うことができることを特徴とする請求項13に記載の方法。
  15. 複数のソフトウェアアプリケーションおよびリソースの相互運用を制御するシステムであって、
    通信用のコンテキスト候補リストを生成するコンテキスト管理システムと、
    前記コンテキストのために定義された少なくとも1つのポリシーに従って前記候補リストを評価するポリシーエンジンであって、前記通信のために結果として生じたアクションおよび名前空間をさらに識別するポリシーエンジンと、
    前記通信を第1のアプリケーションから第2のアプリケーションまたはリソースに向ける仮想環境マネージャであって、前記識別された名前空間内の前記少なくとも1つのポリシーによって定義された通りに、前記結果として生じたアクションを示す指示を受信する仮想環境マネージャと
    を含むことを特徴とするシステム。
JP2007524863A 2004-08-03 2005-07-28 コンテキストポリシー制御によるアプリケーション間の関連付けの制御のためのシステムおよび方法 Active JP5021475B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US59823404P 2004-08-03 2004-08-03
US60/598,234 2004-08-03
PCT/US2005/026995 WO2006017388A1 (en) 2004-08-03 2005-07-28 System and method for controlling inter-application association through contextual policy control

Publications (2)

Publication Number Publication Date
JP2008509475A true JP2008509475A (ja) 2008-03-27
JP5021475B2 JP5021475B2 (ja) 2012-09-05

Family

ID=35432798

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007524863A Active JP5021475B2 (ja) 2004-08-03 2005-07-28 コンテキストポリシー制御によるアプリケーション間の関連付けの制御のためのシステムおよび方法

Country Status (6)

Country Link
US (4) US7962918B2 (ja)
EP (1) EP1784725A1 (ja)
JP (1) JP5021475B2 (ja)
KR (1) KR101150019B1 (ja)
CN (1) CN100481013C (ja)
WO (1) WO2006017388A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011529607A (ja) * 2008-07-28 2011-12-08 マイクロソフト コーポレーション アプリケーション変更に対する状態分離
JP2013524365A (ja) * 2010-04-06 2013-06-17 マイクロソフト コーポレーション 仮想アプリケーション拡張ポイント

Families Citing this family (206)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8352400B2 (en) 1991-12-23 2013-01-08 Hoffberg Steven M Adaptive pattern recognition based controller apparatus and method and human-factored interface therefore
US7966078B2 (en) 1999-02-01 2011-06-21 Steven Hoffberg Network media appliance system and method
EP1634175B1 (en) 2003-05-28 2015-06-24 Citrix Systems, Inc. Multilayer access control security system
US7958115B2 (en) * 2004-07-29 2011-06-07 Yahoo! Inc. Search systems and methods using in-line contextual queries
US7856441B1 (en) 2005-01-10 2010-12-21 Yahoo! Inc. Search systems and methods using enhanced contextual queries
US7421441B1 (en) 2005-09-20 2008-09-02 Yahoo! Inc. Systems and methods for presenting information based on publisher-selected labels
US7603349B1 (en) 2004-07-29 2009-10-13 Yahoo! Inc. User interfaces for search systems using in-line contextual queries
US7409402B1 (en) * 2005-09-20 2008-08-05 Yahoo! Inc. Systems and methods for presenting advertising content based on publisher-selected labels
US7784088B2 (en) * 2004-07-30 2010-08-24 Research In Motion Limited Method and system for managing delayed user authentication
EP1779248A4 (en) 2004-07-30 2008-02-27 Research In Motion Ltd METHOD AND SYSTEM FOR COORDINATING CLIENT AND HOST SAFETY MODULES
JP5021475B2 (ja) * 2004-08-03 2012-09-05 マイクロソフト コーポレーション コンテキストポリシー制御によるアプリケーション間の関連付けの制御のためのシステムおよび方法
US7853947B2 (en) * 2004-09-30 2010-12-14 Citrix Systems, Inc. System for virtualizing access to named system objects using rule action associated with request
US8117559B2 (en) * 2004-09-30 2012-02-14 Citrix Systems, Inc. Method and apparatus for virtualizing window information
US7748032B2 (en) * 2004-09-30 2010-06-29 Citrix Systems, Inc. Method and apparatus for associating tickets in a ticket hierarchy
US7752600B2 (en) * 2004-09-30 2010-07-06 Citrix Systems, Inc. Method and apparatus for providing file-type associations to multiple applications
US7711835B2 (en) * 2004-09-30 2010-05-04 Citrix Systems, Inc. Method and apparatus for reducing disclosure of proprietary data in a networked environment
US7680758B2 (en) 2004-09-30 2010-03-16 Citrix Systems, Inc. Method and apparatus for isolating execution of software applications
US8171479B2 (en) * 2004-09-30 2012-05-01 Citrix Systems, Inc. Method and apparatus for providing an aggregate view of enumerated system resources from various isolation layers
US8613048B2 (en) * 2004-09-30 2013-12-17 Citrix Systems, Inc. Method and apparatus for providing authorized remote access to application sessions
US8095940B2 (en) * 2005-09-19 2012-01-10 Citrix Systems, Inc. Method and system for locating and accessing resources
US7970771B2 (en) * 2004-12-20 2011-06-28 Microsoft Corporation Method and system for tracking objects associated with an activity
US8024568B2 (en) 2005-01-28 2011-09-20 Citrix Systems, Inc. Method and system for verification of an endpoint security scan
US7739682B1 (en) * 2005-03-24 2010-06-15 The Weather Channel, Inc. Systems and methods for selectively blocking application installation
AU2010201379B2 (en) * 2010-04-07 2012-02-23 Limelight Networks, Inc. System and method for delivery of content objects
US20060265387A1 (en) * 2005-05-20 2006-11-23 International Business Machines Corporation Method and apparatus for loading artifacts
US7861297B2 (en) * 2005-09-30 2010-12-28 Microsoft Corporation Reducing security threats from untrusted code
US20070083610A1 (en) * 2005-10-07 2007-04-12 Treder Terry N Method and a system for accessing a plurality of files comprising an application program
US8131825B2 (en) * 2005-10-07 2012-03-06 Citrix Systems, Inc. Method and a system for responding locally to requests for file metadata associated with files stored remotely
US7779034B2 (en) * 2005-10-07 2010-08-17 Citrix Systems, Inc. Method and system for accessing a remote file in a directory structure associated with an application program executing locally
US20070083620A1 (en) * 2005-10-07 2007-04-12 Pedersen Bradley J Methods for selecting between a predetermined number of execution methods for an application program
US7747627B1 (en) * 2005-12-09 2010-06-29 Cisco Technology, Inc. Method and system for file retrieval using image virtual file system
US9407662B2 (en) * 2005-12-29 2016-08-02 Nextlabs, Inc. Analyzing activity data of an information management system
US20070162510A1 (en) * 2005-12-30 2007-07-12 Microsoft Corporation Delayed file virtualization
US7739731B2 (en) * 2006-01-09 2010-06-15 Oracle America, Inc. Method and apparatus for protection domain based security
US20070174429A1 (en) * 2006-01-24 2007-07-26 Citrix Systems, Inc. Methods and servers for establishing a connection between a client system and a virtual machine hosting a requested computing environment
US9118697B1 (en) 2006-03-20 2015-08-25 Netapp, Inc. System and method for integrating namespace management and storage management in a storage system environment
US8151360B1 (en) 2006-03-20 2012-04-03 Netapp, Inc. System and method for administering security in a logical namespace of a storage system environment
US8726267B2 (en) * 2006-03-24 2014-05-13 Red Hat, Inc. Sharing software certification and process metadata
US8004973B2 (en) 2006-04-25 2011-08-23 Citrix Systems, Inc. Virtual inline configuration for a network device
US7698351B1 (en) 2006-04-28 2010-04-13 Netapp, Inc. GUI architecture for namespace and storage management
US8635247B1 (en) * 2006-04-28 2014-01-21 Netapp, Inc. Namespace and storage management application infrastructure for use in management of resources in a storage system environment
US8117441B2 (en) * 2006-06-20 2012-02-14 Microsoft Corporation Integrating security protection tools with computer device integrity and privacy policy
US8819242B2 (en) * 2006-08-31 2014-08-26 Cisco Technology, Inc. Method and system to transfer data utilizing cut-through sockets
WO2008036665A2 (en) * 2006-09-18 2008-03-27 The Trustees Of Columbia University In The City Of New York Methods, media, and systems for detecting attack on a digital processing device
US8789172B2 (en) 2006-09-18 2014-07-22 The Trustees Of Columbia University In The City Of New York Methods, media, and systems for detecting attack on a digital processing device
US7720931B2 (en) * 2006-10-13 2010-05-18 International Business Machines Corporation System and method of remotely managing and loading artifacts
US7761559B2 (en) * 2006-10-13 2010-07-20 International Business Machines Corporation System and method of remotely managing and loading artifacts
US9038062B2 (en) * 2006-10-17 2015-05-19 Manageiq, Inc. Registering and accessing virtual systems for use in a managed system
US8612971B1 (en) 2006-10-17 2013-12-17 Manageiq, Inc. Automatic optimization for virtual systems
US9015703B2 (en) 2006-10-17 2015-04-21 Manageiq, Inc. Enforcement of compliance policies in managed virtual systems
US8234640B1 (en) 2006-10-17 2012-07-31 Manageiq, Inc. Compliance-based adaptations in managed virtual systems
US8949826B2 (en) * 2006-10-17 2015-02-03 Managelq, Inc. Control and management of virtual systems
US8949825B1 (en) 2006-10-17 2015-02-03 Manageiq, Inc. Enforcement of compliance policies in managed virtual systems
US9697019B1 (en) 2006-10-17 2017-07-04 Manageiq, Inc. Adapt a virtual machine to comply with system enforced policies and derive an optimized variant of the adapted virtual machine
US8752045B2 (en) 2006-10-17 2014-06-10 Manageiq, Inc. Methods and apparatus for using tags to control and manage assets
US9086917B1 (en) 2006-10-17 2015-07-21 Manageiq, Inc. Registering and accessing virtual systems for use in a managed system
US8234641B2 (en) 2006-10-17 2012-07-31 Managelq, Inc. Compliance-based adaptations in managed virtual systems
US8458695B2 (en) * 2006-10-17 2013-06-04 Manageiq, Inc. Automatic optimization for virtual systems
US8533846B2 (en) 2006-11-08 2013-09-10 Citrix Systems, Inc. Method and system for dynamically associating access rights with a resource
IL180566A (en) * 2007-01-04 2013-03-24 Boaz Fletcher Electronic messaging system and method
US8650579B1 (en) * 2007-01-31 2014-02-11 Hewlett-Packard Development Company, L.P. Containment for computer-software update installation processes
US8307404B2 (en) 2007-04-16 2012-11-06 Microsoft Corporation Policy-management infrastructure
US20090006713A1 (en) * 2007-06-26 2009-01-01 Royer Matthew I Dynamic virtualized volume
US8612972B2 (en) 2007-06-27 2013-12-17 Microsoft Corporation Running add-on components in virtual environments
US8291438B2 (en) * 2007-06-29 2012-10-16 Microsoft Corporation Printing for virtualized applications
US7886301B2 (en) * 2007-06-29 2011-02-08 Microsoft Corporation Namespace merger
US8862590B2 (en) * 2007-06-29 2014-10-14 Microsoft Corporation Flexible namespace prioritization
US20090024674A1 (en) * 2007-07-17 2009-01-22 Gridiron Software Inc. Automatic file versioning
KR100920748B1 (ko) * 2007-08-20 2009-10-14 경희대학교 산학협력단 사회 네트워크를 응용한 집단수준에서의 상황인식 서비스갈등해소 방법
US8146098B2 (en) * 2007-09-07 2012-03-27 Manageiq, Inc. Method and apparatus for interfacing with a computer user via virtual thumbnails
US8171483B2 (en) 2007-10-20 2012-05-01 Citrix Systems, Inc. Method and system for communicating between isolation environments
US8521966B2 (en) * 2007-11-16 2013-08-27 Vmware, Inc. VM inter-process communications
US8407688B2 (en) * 2007-11-27 2013-03-26 Managelq, Inc. Methods and apparatus for storing and transmitting historical configuration data associated with information technology assets
US8418173B2 (en) 2007-11-27 2013-04-09 Manageiq, Inc. Locating an unauthorized virtual machine and bypassing locator code by adjusting a boot pointer of a managed virtual machine in authorized environment
US9818071B2 (en) 2007-12-21 2017-11-14 Invention Science Fund I, Llc Authorization rights for operational components
US8706800B1 (en) * 2007-12-21 2014-04-22 Emc Corporation Client device systems and methods for providing secure access to application services and associated client data hosted by an internet coupled platform
US9071436B2 (en) * 2007-12-21 2015-06-30 The Invention Science Fund I, Llc Security-activated robotic system
US20110178619A1 (en) * 2007-12-21 2011-07-21 Searete Llc, A Limited Liability Corporation Of The State Of Delaware Security-activated robotic tasks
US8752166B2 (en) * 2007-12-21 2014-06-10 The Invention Science Fund I, Llc Security-activated operational components
US20090164379A1 (en) * 2007-12-21 2009-06-25 Searete Llc, A Limited Liability Corporation Of The State Of Delaware Conditional authorization for security-activated device
US8286236B2 (en) * 2007-12-21 2012-10-09 The Invention Science Fund I, Llc Manufacturing control system
US8429754B2 (en) * 2007-12-21 2013-04-23 The Invention Science Fund I, Llc Control technique for object production rights
US9128476B2 (en) 2007-12-21 2015-09-08 The Invention Science Fund I, Llc Secure robotic operational system
US9626487B2 (en) * 2007-12-21 2017-04-18 Invention Science Fund I, Llc Security-activated production device
US7792934B2 (en) * 2008-01-02 2010-09-07 Citrix Systems International Gmbh Loading of server-stored user profile data
US9454410B2 (en) 2008-03-04 2016-09-27 Microsoft Technology Licensing, Llc Transparent integration of application components
US8078713B1 (en) * 2008-03-05 2011-12-13 Full Armor Corporation Delivering policy settings with virtualized applications
US8516505B2 (en) 2008-03-14 2013-08-20 Microsoft Corporation Cross-platform compatibility framework for computer applications
US8051080B2 (en) * 2008-04-16 2011-11-01 Yahoo! Inc. Contextual ranking of keywords using click data
US8229980B2 (en) * 2008-04-30 2012-07-24 Microsoft Corporation State buckets
US8108346B1 (en) * 2008-06-27 2012-01-31 Symantec Corporation Systems and methods for maintaining settings for multiple applications
US8353044B1 (en) * 2008-06-27 2013-01-08 Symantec Corporation Methods and systems for computing device remediation
US8176102B2 (en) * 2008-07-16 2012-05-08 Oracle International Corporation Techniques for extending and controlling access to a common information model (CIM)
US8458236B2 (en) * 2008-07-16 2013-06-04 Oracle International Corporation File system interface for CIM
US8392361B2 (en) * 2008-08-11 2013-03-05 Vmware, Inc. Centralized management of virtual machines
US8209343B2 (en) * 2008-10-06 2012-06-26 Vmware, Inc. Namespace mapping to central storage
US7996719B2 (en) * 2008-10-24 2011-08-09 Microsoft Corporation Expressing fault correlation constraints
KR101489466B1 (ko) 2008-12-17 2015-02-03 삼성전자 주식회사 프로세스 마이그레이션을 관리하는 장치 및 방법
KR100985074B1 (ko) * 2009-02-05 2010-10-04 주식회사 안철수연구소 선별적 가상화를 이용한 악성 코드 사전 차단 장치, 방법 및 그 방법을 실행하는 프로그램이 기록된 컴퓨터로 읽을 수 있는 기록매체
CN101819525B (zh) * 2009-02-27 2013-11-27 国际商业机器公司 用于查找系统中应用的配置文件的方法和设备
FR2943155B1 (fr) * 2009-03-12 2014-07-18 Giovanni Albani Procede et systeme collaboratif de modifications d'applications numeriques en reseau
US8090797B2 (en) 2009-05-02 2012-01-03 Citrix Systems, Inc. Methods and systems for launching applications into existing isolation environments
US9736675B2 (en) * 2009-05-12 2017-08-15 Avaya Inc. Virtual machine implementation of multiple use context executing on a communication device
US8352875B2 (en) * 2009-11-17 2013-01-08 Hewlett-Packard Development Company, L.P. System and method for integrating a plurality of software applications
US8244874B1 (en) 2011-09-26 2012-08-14 Limelight Networks, Inc. Edge-based resource spin-up for cloud computing
US8745239B2 (en) 2010-04-07 2014-06-03 Limelight Networks, Inc. Edge-based resource spin-up for cloud computing
US8412510B2 (en) * 2010-04-21 2013-04-02 Fisher-Rosemount Systems, Inc. Methods and apparatus to display localized resources in process control applications
US20110296430A1 (en) * 2010-05-27 2011-12-01 International Business Machines Corporation Context aware data protection
US9009663B2 (en) * 2010-06-01 2015-04-14 Red Hat, Inc. Cartridge-based package management
US20120016999A1 (en) * 2010-07-14 2012-01-19 Sap Ag Context for Sharing Data Objects
US9240965B2 (en) 2010-08-31 2016-01-19 Sap Se Methods and systems for business interaction monitoring for networked business process
US8438272B2 (en) 2010-08-31 2013-05-07 Sap Ag Methods and systems for managing quality of services for network participants in a networked business process
US8560636B2 (en) 2010-08-31 2013-10-15 Sap Ag Methods and systems for providing a virtual network process context for network participant processes in a networked business process
US8713098B1 (en) 2010-10-01 2014-04-29 Google Inc. Method and system for migrating object update messages through synchronous data propagation
US9779168B2 (en) 2010-10-04 2017-10-03 Excalibur Ip, Llc Contextual quick-picks
US8943483B2 (en) * 2010-11-11 2015-01-27 International Business Machines Corporation Application programming interface naming using collaborative services
US8957900B2 (en) * 2010-12-13 2015-02-17 Microsoft Corporation Coordination of animations across multiple applications or processes
US9691055B2 (en) 2010-12-17 2017-06-27 Google Inc. Digital wallet
US8335921B2 (en) 2010-12-17 2012-12-18 Google, Inc. Writing application data to a secure element
US8352749B2 (en) 2010-12-17 2013-01-08 Google Inc. Local trusted services manager for a contactless smart card
US8807440B1 (en) 2010-12-17 2014-08-19 Google Inc. Routing secure element payment requests to an alternate application
US9208332B2 (en) * 2010-12-24 2015-12-08 Microsoft Technology Licensing, Llc Scoped resource authorization policies
EP2500856A1 (en) * 2011-03-15 2012-09-19 Amadeus S.A.S. Method and system for providing a session involving a plurality of software applications
US20120246609A1 (en) 2011-03-24 2012-09-27 International Business Machines Corporation Automatic generation of user stories for software products via a product content space
CN102779032B (zh) * 2011-05-11 2016-02-03 深圳市金蝶中间件有限公司 基于复合组件的请求处理方法及系统
US20120304124A1 (en) * 2011-05-23 2012-11-29 Microsoft Corporation Context aware input engine
US20120304283A1 (en) * 2011-05-27 2012-11-29 Microsoft Corporation Brokered item access for isolated applications
CN102340501A (zh) * 2011-07-14 2012-02-01 广东爱科数字科技有限公司 一种综合平台的隐私信息保护方法
US8706852B2 (en) * 2011-08-23 2014-04-22 Red Hat, Inc. Automated scaling of an application and its support components
US8255687B1 (en) 2011-09-15 2012-08-28 Google Inc. Enabling users to select between secure service providers using a key escrow service
US8171525B1 (en) 2011-09-15 2012-05-01 Google Inc. Enabling users to select between secure service providers using a central trusted service manager
US8313036B1 (en) 2011-09-16 2012-11-20 Google Inc. Secure application directory
US9779429B2 (en) * 2011-12-20 2017-10-03 International Business Machines Corporation Custom rule based determination of pricing information using file with predetermined name stored in installation directory in install path
WO2013100921A1 (en) * 2011-12-28 2013-07-04 Intel Corporation Allocating memory access control policies
JP2013161451A (ja) * 2012-02-08 2013-08-19 Canon Inc 情報処理装置、情報処理方法、およびプログラム
CN103294948B (zh) * 2012-02-27 2017-02-08 百度在线网络技术(北京)有限公司 软件恶意行为的建模及判断方法、装置和移动终端
US8385553B1 (en) 2012-02-28 2013-02-26 Google Inc. Portable secure element
US8429409B1 (en) 2012-04-06 2013-04-23 Google Inc. Secure reset of personal and service provider information on mobile devices
WO2013170428A1 (en) * 2012-05-14 2013-11-21 Nokia Corporation Method and apparatus for determining context-aware similarity
US9092235B2 (en) 2012-05-25 2015-07-28 Microsoft Technology Licensing, Llc Virtualizing integrated calls to provide access to resources in a virtual namespace
US9405556B2 (en) * 2012-06-28 2016-08-02 Microsoft Technology Licensing, Llc Dynamic addition and removal of operating system components
US9195502B2 (en) 2012-06-29 2015-11-24 International Business Machines Corporation Auto detecting shared libraries and creating a virtual scope repository
US9444896B2 (en) * 2012-12-05 2016-09-13 Microsoft Technology Licensing, Llc Application migration between clouds
US9229959B2 (en) 2013-01-04 2016-01-05 Microsoft Technology Licensing, Llc Object graph partial immutability and isolation enforcement
US9098269B2 (en) 2013-01-04 2015-08-04 Microsoft Technology Licensing, Llc System and method to ensure resource access safety with immutable object types
US9081645B2 (en) 2013-01-15 2015-07-14 International Business Machines Corporation Software product licensing based on a content space
US9111040B2 (en) 2013-01-15 2015-08-18 International Business Machines Corporation Integration of a software content space with test planning and test case generation
US9396342B2 (en) 2013-01-15 2016-07-19 International Business Machines Corporation Role based authorization based on product content space
US9141379B2 (en) 2013-01-15 2015-09-22 International Business Machines Corporation Automated code coverage measurement and tracking per user story and requirement
US9063809B2 (en) * 2013-01-15 2015-06-23 International Business Machines Corporation Content space environment representation
US9069647B2 (en) 2013-01-15 2015-06-30 International Business Machines Corporation Logging and profiling content space data and coverage metric self-reporting
US9087155B2 (en) 2013-01-15 2015-07-21 International Business Machines Corporation Automated data collection, computation and reporting of content space coverage metrics for software products
US9659053B2 (en) 2013-01-15 2017-05-23 International Business Machines Corporation Graphical user interface streamlining implementing a content space
US9218161B2 (en) 2013-01-15 2015-12-22 International Business Machines Corporation Embedding a software content space for run-time implementation
US9075544B2 (en) 2013-01-15 2015-07-07 International Business Machines Corporation Integration and user story generation and requirements management
CN103399788B (zh) * 2013-08-07 2017-03-08 广东欧珀移动通信有限公司 一种智能终端跨应用控制方法和系统
US10754825B2 (en) * 2013-08-28 2020-08-25 Red Hat, Inc. Path resolver for client access to distributed file systems
US10356047B2 (en) * 2013-12-05 2019-07-16 Crowdstrike, Inc. RPC call interception
US9772876B2 (en) * 2014-01-06 2017-09-26 International Business Machines Corporation Executing an all-to-allv operation on a parallel computer that includes a plurality of compute nodes
US10181028B2 (en) * 2014-02-21 2019-01-15 Samsung Electronics Co., Ltd. Method and apparatus to sandbox run-time android applications with lightweight container
US9703772B2 (en) * 2014-10-07 2017-07-11 Conversational Logic Ltd. System and method for automated alerts in anticipation of inappropriate communication
US20160191645A1 (en) * 2014-12-30 2016-06-30 Citrix Systems, Inc. Containerizing Web Applications for Managed Execution
US10740180B2 (en) * 2015-01-30 2020-08-11 Pure Storage, Inc. Storing and retrieving data using proxies
US9572104B2 (en) * 2015-02-25 2017-02-14 Microsoft Technology Licensing, Llc Dynamic adjustment of user experience based on system capabilities
US11023538B2 (en) * 2015-08-25 2021-06-01 International Business Machines Corporation System and methods for dynamic generation of object storage datasets from existing file datasets
RU2618946C1 (ru) 2015-12-18 2017-05-11 Акционерное общество "Лаборатория Касперского" Способ блокировки доступа к данным на мобильных устройствах с использованием API для пользователей с ограниченными возможностями
US10037424B1 (en) * 2015-12-22 2018-07-31 Amazon Technologies, Inc. Isolated virtual environments for untrusted applications
US9733999B1 (en) 2016-03-24 2017-08-15 Wells Fargo Bank, N.A. Dynamic optimization of application workflows
CN105955802B (zh) * 2016-04-21 2020-06-12 青岛海信移动通信技术股份有限公司 一种移动终端的应用运行方法及移动终端
US10216513B2 (en) * 2016-09-15 2019-02-26 Oracle International Corporation Plugin for multi-module web applications
US10649752B2 (en) * 2016-09-28 2020-05-12 International Business Machines Corporation Sharing data and applications across computing systems
US10395027B2 (en) 2016-12-09 2019-08-27 Vmware, Inc. Co-existence of management applications and multiple user device management
US10936331B2 (en) 2017-02-23 2021-03-02 International Business Machines Corporation Running a kernel-dependent application in a container
US10564959B2 (en) * 2017-03-14 2020-02-18 Google Llc Shared software libraries for computing devices
US10642664B2 (en) * 2017-03-21 2020-05-05 Dell Products, Lp System and method for securing an inter-process communication via a named pipe
US10452838B2 (en) * 2017-07-27 2019-10-22 Symantec Corporation Providing joint access to an isolated computer object by both an isolated computer application and a non-isolated computer application
US11947489B2 (en) 2017-09-05 2024-04-02 Robin Systems, Inc. Creating snapshots of a storage volume in a distributed storage system
US11748203B2 (en) * 2018-01-11 2023-09-05 Robin Systems, Inc. Multi-role application orchestration in a distributed storage system
US11582168B2 (en) 2018-01-11 2023-02-14 Robin Systems, Inc. Fenced clone applications
US11392363B2 (en) 2018-01-11 2022-07-19 Robin Systems, Inc. Implementing application entrypoints with containers of a bundled application
US10671739B2 (en) * 2018-01-17 2020-06-02 Salesforce.Com, Inc. Managing the sharing of common library packages with subscribers
GB2570924B (en) 2018-02-12 2021-06-16 Avecto Ltd Managing registry access on a computer device
JP7040467B2 (ja) * 2019-01-11 2022-03-23 日本電信電話株式会社 更新装置および更新方法
US11256434B2 (en) 2019-04-17 2022-02-22 Robin Systems, Inc. Data de-duplication
US11226837B2 (en) * 2019-06-14 2022-01-18 Citrix Systems, Inc. On-demand applications
US11249851B2 (en) 2019-09-05 2022-02-15 Robin Systems, Inc. Creating snapshots of a storage volume in a distributed storage system
US11520650B2 (en) 2019-09-05 2022-12-06 Robin Systems, Inc. Performing root cause analysis in a multi-role application
CN110659491B (zh) * 2019-09-23 2022-04-29 深信服科技股份有限公司 一种计算机系统恢复方法、装置、设备及可读存储介质
US11347684B2 (en) 2019-10-04 2022-05-31 Robin Systems, Inc. Rolling back KUBERNETES applications including custom resources
US11403188B2 (en) 2019-12-04 2022-08-02 Robin Systems, Inc. Operation-level consistency points and rollback
US11822522B2 (en) * 2020-01-31 2023-11-21 EMC IP Holding Company LLC Intelligent filesystem for container images
WO2021189229A1 (en) * 2020-03-24 2021-09-30 Citrix Systems, Inc. Inter-application relevance management for application virtualization platform
US11528186B2 (en) 2020-06-16 2022-12-13 Robin Systems, Inc. Automated initialization of bare metal servers
CN111914032B (zh) * 2020-08-14 2024-03-22 青岛海信微联信号有限公司 应用于交通工具自动监控系统的数据处理装置和方法
US11620182B2 (en) 2020-08-31 2023-04-04 Bank Of America Corporation System for resolution of technical issues using computing system-specific contextual data
US11740980B2 (en) 2020-09-22 2023-08-29 Robin Systems, Inc. Managing snapshot metadata following backup
US11418588B2 (en) 2020-09-29 2022-08-16 EMC IP Holding Company LLC Intelligent peer-to-peer container filesystem
US11743188B2 (en) 2020-10-01 2023-08-29 Robin Systems, Inc. Check-in monitoring for workflows
US11456914B2 (en) 2020-10-07 2022-09-27 Robin Systems, Inc. Implementing affinity and anti-affinity with KUBERNETES
US11271895B1 (en) 2020-10-07 2022-03-08 Robin Systems, Inc. Implementing advanced networking capabilities using helm charts
US11750451B2 (en) 2020-11-04 2023-09-05 Robin Systems, Inc. Batch manager for complex workflows
US11556361B2 (en) 2020-12-09 2023-01-17 Robin Systems, Inc. Monitoring and managing of complex multi-role applications
US12001402B2 (en) * 2021-08-02 2024-06-04 Dell Products L.P. Dynamically selecting an application to open a file
US20230195543A1 (en) * 2021-12-16 2023-06-22 Rakuten Mobile, Inc. Application programming interface (api) server for correlation engine and policy manager (cpe), method and computer program product
CN114003941B (zh) * 2021-12-28 2022-04-05 麒麟软件有限公司 基于Linux操作系统的软件权限控制系统及方法
CN116578968A (zh) * 2023-04-24 2023-08-11 国网冀北电力有限公司信息通信分公司 对电力控制系统中应用程序提供安全防护的方法及装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09160847A (ja) * 1995-12-08 1997-06-20 Hitachi Ltd クライアント・サーバ型分散処理システム
US5961582A (en) * 1994-10-25 1999-10-05 Acorn Technologies, Inc. Distributed and portable execution environment
WO2002093369A1 (en) * 2001-05-16 2002-11-21 Softricity, Inc. Operating system abstraction and protection layer
JP2002358206A (ja) * 2001-05-31 2002-12-13 Fujitsu Ltd コンピュータシステム、サービス層、ポリシーキャッシュ機能部およびポリシー管理装置
JP2004520641A (ja) * 2000-07-19 2004-07-08 オープンデザイン インコーポレイテッド イベントバスのアーキテクチャ

Family Cites Families (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5627996A (en) * 1992-08-19 1997-05-06 At&T Method and apparatus for accessing the same computer file using different file name formats
KR100238627B1 (ko) * 1993-01-12 2000-01-15 히가시 데쓰로 플라즈마 처리장치
US5745752A (en) * 1994-12-13 1998-04-28 Microsoft Corporation Dual namespace client having long and short filenames
US5813009A (en) * 1995-07-28 1998-09-22 Univirtual Corp. Computer based records management system method
US5752005A (en) 1996-01-22 1998-05-12 Microtest, Inc. Foreign file system establishing method which uses a native file system virtual device driver
US6505300B2 (en) * 1998-06-12 2003-01-07 Microsoft Corporation Method and system for secure running of untrusted content
US6256031B1 (en) * 1998-06-26 2001-07-03 Microsoft Corporation Integration of physical and virtual namespace
US7143421B2 (en) * 1998-09-09 2006-11-28 Microsoft Corporation Highly componentized system architecture with a demand-loading namespace and programming model
US7107591B1 (en) * 1998-11-05 2006-09-12 Hewlett-Packard Development Company, L.P. Task-specific flexible binding in a software system
US6356915B1 (en) * 1999-02-22 2002-03-12 Starbase Corp. Installable file system having virtual file system drive, virtual device driver, and virtual disks
US9141717B2 (en) * 1999-03-22 2015-09-22 Esdr Network Solutions Llc Methods, systems, products, and devices for processing DNS friendly identifiers
US6850987B1 (en) * 1999-06-01 2005-02-01 Fastforward Networks, Inc. System for multipoint infrastructure transport in a computer network
US6408298B1 (en) * 1999-12-15 2002-06-18 Microsoft Corporation Methods and systems for copying and moving across virtual namespaces
US6643652B2 (en) * 2000-01-14 2003-11-04 Saba Software, Inc. Method and apparatus for managing data exchange among systems in a network
US7000012B2 (en) * 2000-04-24 2006-02-14 Microsoft Corporation Systems and methods for uniquely identifying networks by correlating each network name with the application programming interfaces of transport protocols supported by the network
US7562153B2 (en) * 2000-05-12 2009-07-14 AT&T Intellectual Property II, L. P. Method and apparatus for content distribution network brokering and peering
US20020194215A1 (en) * 2000-10-31 2002-12-19 Christian Cantrell Advertising application services system and method
US20020092003A1 (en) * 2000-11-29 2002-07-11 Brad Calder Method and process for the rewriting of binaries to intercept system calls in a secure execution environment
AU2002230616A1 (en) * 2000-12-06 2002-06-18 Waveset Technologies, Inc. System and method for managing information objects
US7509322B2 (en) * 2001-01-11 2009-03-24 F5 Networks, Inc. Aggregated lock management for locking aggregated files in a switched file system
US7206819B2 (en) * 2001-01-18 2007-04-17 Sun Microsystems, Inc. Method and apparatus for providing virtual namespaces for active computing environments
US7613930B2 (en) * 2001-01-19 2009-11-03 Trustware International Limited Method for protecting computer programs and data from hostile code
US7149807B1 (en) * 2001-02-02 2006-12-12 Akamai Technologies, Inc. Control and communication infrastructure (CCI) for selecting a transport mechanism to transport data to one or more servers in a content delivery network based on the size of the data, together with frequency and loss tolerance with respect to transport of the data
US7207041B2 (en) * 2001-06-28 2007-04-17 Tranzeo Wireless Technologies, Inc. Open platform architecture for shared resource access management
US7647597B2 (en) * 2001-06-28 2010-01-12 Microsoft Corporation Transparent and sub-classable proxies
US6662198B2 (en) * 2001-08-30 2003-12-09 Zoteca Inc. Method and system for asynchronous transmission, backup, distribution of data and file sharing
US7269823B2 (en) * 2001-11-29 2007-09-11 Microsoft Corporation System and method for identifying namespaces
EP1329787B1 (en) * 2002-01-16 2019-08-28 Texas Instruments Incorporated Secure mode indicator for smart phone or PDA
AU2003239385A1 (en) * 2002-05-10 2003-11-11 Richard R. Reisman Method and apparatus for browsing using multiple coordinated device
US7076766B2 (en) * 2002-06-03 2006-07-11 Steve Wirts Software application development methods and framework
US7150004B2 (en) * 2002-08-21 2006-12-12 International Business Machines Corporation Programmatically serializing complex objects using self-healing techniques
US20040172584A1 (en) * 2003-02-28 2004-09-02 Microsoft Corporation Method and system for enhancing paste functionality of a computer software application
US7401075B2 (en) * 2003-06-11 2008-07-15 Wtviii, Inc. System for viewing and indexing mark up language messages, forms and documents
US7720794B2 (en) * 2003-08-05 2010-05-18 International Business Machines Corporation Identifying resource and data instances in management systems
US7647327B2 (en) * 2003-09-24 2010-01-12 Hewlett-Packard Development Company, L.P. Method and system for implementing storage strategies of a file autonomously of a user
US20050091658A1 (en) * 2003-10-24 2005-04-28 Microsoft Corporation Operating system resource protection
US20050114870A1 (en) * 2003-11-21 2005-05-26 Song Dong H. System and method for executing an application on a secured run-time environment
US20050182966A1 (en) 2004-02-17 2005-08-18 Duc Pham Secure interprocess communications binding system and methods
US8607299B2 (en) * 2004-04-27 2013-12-10 Microsoft Corporation Method and system for enforcing a security policy via a security virtual machine
JP5021475B2 (ja) * 2004-08-03 2012-09-05 マイクロソフト コーポレーション コンテキストポリシー制御によるアプリケーション間の関連付けの制御のためのシステムおよび方法
US7930273B1 (en) * 2007-07-30 2011-04-19 Adobe Systems Incorporated Version management for application execution environment

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5961582A (en) * 1994-10-25 1999-10-05 Acorn Technologies, Inc. Distributed and portable execution environment
JPH09160847A (ja) * 1995-12-08 1997-06-20 Hitachi Ltd クライアント・サーバ型分散処理システム
JP2004520641A (ja) * 2000-07-19 2004-07-08 オープンデザイン インコーポレイテッド イベントバスのアーキテクチャ
WO2002093369A1 (en) * 2001-05-16 2002-11-21 Softricity, Inc. Operating system abstraction and protection layer
JP2004533054A (ja) * 2001-05-16 2004-10-28 ソフトリシティ インコーポレイテッド オペレーティングシステム抽象化/保護レイヤ
JP2002358206A (ja) * 2001-05-31 2002-12-13 Fujitsu Ltd コンピュータシステム、サービス層、ポリシーキャッシュ機能部およびポリシー管理装置

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011529607A (ja) * 2008-07-28 2011-12-08 マイクロソフト コーポレーション アプリケーション変更に対する状態分離
US8984512B2 (en) 2008-07-28 2015-03-17 Microsoft Technology Licensing, Llc State separation for applications
US9304791B2 (en) 2008-07-28 2016-04-05 Microsoft Technology Licensing, Llc State separation for virtual applications
JP2013524365A (ja) * 2010-04-06 2013-06-17 マイクロソフト コーポレーション 仮想アプリケーション拡張ポイント
KR101793306B1 (ko) 2010-04-06 2017-11-20 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 가상 애플리케이션 확장 포인트
US9880889B2 (en) 2010-04-06 2018-01-30 Microsoft Technology Licensing, Llc Virtual application extension points

Also Published As

Publication number Publication date
JP5021475B2 (ja) 2012-09-05
US20220019655A1 (en) 2022-01-20
US20060036570A1 (en) 2006-02-16
CN100481013C (zh) 2009-04-22
KR20070057783A (ko) 2007-06-07
WO2006017388A1 (en) 2006-02-16
EP1784725A1 (en) 2007-05-16
US20190205529A1 (en) 2019-07-04
CN101048735A (zh) 2007-10-03
KR101150019B1 (ko) 2012-06-01
US20110239227A1 (en) 2011-09-29
US11138309B2 (en) 2021-10-05
US11693954B2 (en) 2023-07-04
US10229265B2 (en) 2019-03-12
US7962918B2 (en) 2011-06-14

Similar Documents

Publication Publication Date Title
US11693954B2 (en) System and method for controlling inter-application association through contextual policy control
TW588255B (en) Operating system abstraction and protection layer
US7680758B2 (en) Method and apparatus for isolating execution of software applications
AU2005292341B2 (en) Method and apparatus for isolating execution of software applications
US20060070029A1 (en) Method and apparatus for providing file-type associations to multiple applications
US20070067321A1 (en) Method and system for locating and accessing resources
US20060070030A1 (en) Method and apparatus for providing an aggregate view of enumerated system resources from various isolation layers

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080728

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110527

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110603

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20110614

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110902

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110909

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111003

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120605

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120614

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 5021475

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150622

Year of fee payment: 3

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250