JP2004533054A - オペレーティングシステム抽象化/保護レイヤ - Google Patents
オペレーティングシステム抽象化/保護レイヤ Download PDFInfo
- Publication number
- JP2004533054A JP2004533054A JP2002589978A JP2002589978A JP2004533054A JP 2004533054 A JP2004533054 A JP 2004533054A JP 2002589978 A JP2002589978 A JP 2002589978A JP 2002589978 A JP2002589978 A JP 2002589978A JP 2004533054 A JP2004533054 A JP 2004533054A
- Authority
- JP
- Japan
- Prior art keywords
- application
- operating system
- protection layer
- abstraction
- changes
- 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
Links
- 230000003993 interaction Effects 0.000 claims abstract description 5
- 230000006870 function Effects 0.000 claims description 25
- 238000009434 installation Methods 0.000 claims description 18
- 230000008859 change Effects 0.000 claims description 15
- 230000002452 interceptive effect Effects 0.000 claims description 4
- 230000010354 integration Effects 0.000 claims description 2
- 238000010586 diagram Methods 0.000 abstract description 6
- 238000000034 method Methods 0.000 description 45
- 230000008569 process Effects 0.000 description 34
- 238000011900 installation process Methods 0.000 description 3
- 238000011084 recovery Methods 0.000 description 3
- 230000001419 dependent effect Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 230000004913 activation Effects 0.000 description 1
- 238000007792 addition Methods 0.000 description 1
- 230000004888 barrier function Effects 0.000 description 1
- 230000003542 behavioural effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000001010 compromised effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- AFYCEAFSNDLKSX-UHFFFAOYSA-N coumarin 460 Chemical compound CC1=CC(=O)OC2=CC(N(CC)CC)=CC=C21 AFYCEAFSNDLKSX-UHFFFAOYSA-N 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 238000012805 post-processing Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000002829 reductive effect Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 238000004904 shortening Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
【選択図】図1
Description
【0001】
本出願は米国特許出願第09/456,181号の一部継続出願であり、その全体が十分に記載されているものとし、引用参考文献としてここに包含される。
【0002】
本発明は、コンピュータソフトウェア、より詳細にはオペレーティングシステムソフトウェアに関する。
【背景技術】
【0003】
多くの環境において、特にアプリケーションがネットワークを介して配布されるような環境において最も重要な機能は、複雑なインストール作業なしにアプリケーションをすぐに実行できることである。一般に、一部の従来システムでは、あたかもプログラムがインストールされているかのようにクライアントシステムを変更したり、あるいはソフトウェア自体を実際にインストールした後でこれらの変更を取り消して元の構成を復元する際に、大変手間がかかった。
【発明の開示】
【発明が解決しようとする課題】
【0004】
このような作業を行う場合、次のような多くの問題が生じる。すなわち、アプリケーションと現在のコンピュータ構成との間に矛盾、不一致があること、同じまたは異なるアプリケーションのインスタンスが複数存在すること、取り消し処理が複雑であるため、アプリケーションに対して厳密な処理を施して、アプリケーションに対するすべての変更の原因を明らかにする必要があること、複数のアプリケーションで共有ファイルと共有システムコンポーネントが使用されているため、取り消し処理とインストール処理が複雑になるといった問題である。
【課題を解決するための手段】
【0005】
本発明は、クライアントコンピュータのオペレーティングシステムを変更することなくアプリケーションソフトウェア環境を作成するためのシステムを提供する。このシステムは、オペレーティングシステム抽象化/保護レイヤから成り、抽象化/保護レイヤは実行されているソフトウェアアプリケーションとオペレーティングシステムとの間に配置される。これにより、アプリケーションを実行できる仮想環境が提供され、アプリケーションレベル間の相互作用が実質的に除去される。好ましくは、オペレーティングシステムに対する直接的な変更を、実行されているアプリケーションのコンテキスト内で選択的に行い、抽象化/保護レイヤが管理設定に従って仮想環境を動的に変更する。また、幾つかの実施形態では、システムが共有システムリソースの使用状況を継続的に監視し、システムコンポーネントに対する変更を適用および除去するサービスとして機能する。
【0006】
したがって、たとえばWindows(登録商標)ベースのオペレーティングシステム内の実施形態では、Windows(登録商標) Registryに対する操作はすべてWin32 APIによって行われ、好ましくはシステムが関数をフックするための手段を提供する。これにより、関数が呼び出されるたびに別の関数またはアプリケーションがその呼び出しを中断する。最も好ましくは、サーバーから実行されているアプリケーションによる要求であれ、アクティブに管理されている構成キーに対してアプリケーションが出した要求であれ、要求に応えるためにシステムが適切なAPI関数それぞれをフックする。
【0007】
本発明の別の好ましい実施形態では、追加機能が提供される。たとえば、オペレーティングシステム抽象化/保護レイヤが、実行されているアプリケーションインスタンスの数を認識することで、1つのアプリケーションの複数インスタンスの統合を管理する。このような実施形態では、実行されているアプリケーションインスタンスが1つのみではない場合、起動時とシャットダウン時の変更を避けることが最も好ましい。この実施形態では、種々異なるユーザーのために多重のアプリケーションインスタンスを実行できる、マルチユーザーオペレーティングシステムをサポートすることも可能である。
【0008】
このため、オペレーティングシステム抽象化/保護レイヤが、インストールを実行しないでもインストール環境であるように現れる環境をアプリケーションに提供する。これにより、アプリケーションの実行時にすべての設定が仮想環境にもたらされる「擬似インストール」が作成される。また、アプリケーションがインストールされている場合は、実行時にアプリケーションの動作を動的に変更する。好ましい実施形態は、クライアントコンピュータ上の情報によってアプリケーション動作が干渉障害を受けたり、変更されることを防止するための手段を提供し、最も好ましくは、管理設定に従って仮想環境を動的に変更するための手段を提供する。上記のように、一部の実施形態では、同じクライアントコンピュータ上で単一ソフトウェアアプリケーションの複数のインスタンスを実行することができる(本来そのように作成されていない場合でも)。このような実施形態では、単一アプリケーションの前記の複数のインスタンスのうちの少なくとも2つが1つ以上の仮想設定を共有するような、共有・制御されたコンテキストが提供される。
【発明を実施するための最良の形態】
【0009】
図1は、本発明、オペレーティングシステム、およびソフトウェアアプリケーションの相対的関係を示すブロック略図である。本発明の好ましい実施形態は、オペレーティングシステム抽象化/保護レイヤ(100)を提供する。これを「オペレーティングシステムガード」と呼ぶ。内部的には、多数のオペレーティングシステム(10)が、実行時にアプリケーションが互いに影響し合うことを防止する障害ドメインを備える。しかし、共有されているシステムリソースとその他の多くのオペレーティングシステム機能によって、この保護ドメインが危険にさらされる。オペレーティングシステム抽象化/保護レイヤ(100)は、アプリケーションレベル間のほとんどの相互作用をなくすために、プログラム制御された障壁をアプリケーション(50)間に追加する。アプリケーション(50)とオペレーティングシステム(10)との間に配置されたアプリケーション抽象化/保護レイヤ(100)が、オペレーティングシステム(10)に対する直接的な変更か、実行されているアプリケーションのコンテキスト内に変更を含めるかを選択的に許可する。一例としてWindows(登録商標)ベースのシステムでは通常、Windows(登録商標) Registryに対する操作はすべてWin32 APIによって実行される。後述するように、QueryRegExやGetProfileStringなどのシステム関数が呼び出されるたびに別の関数またはアプリケーションがこの呼び出しを中断するように、これらのシステム関数をフックすることができる。アクティブに管理されているアプリケーションによる要求であれ、アクティブに管理されている構成項目に対してアプリケーションが出した要求であれ、要求に応えるために本発明のオペレーティングシステムガード(100)が適切なAPI関数それぞれをフックする。この方法では、これを実行するように明示的に構成されていない場合、本発明によって、エンドユーザーシステムを実際に変更することなくアプリケーション環境を作成することができる。また、実行時にアプリケーションによって実行された変更を存続させたり除去することも容易である。
【0010】
ここで使用している「オペレーティングシステムガード」という用語は、ターゲットコンピュータまたはクライアントコンピュータ上の、実行されているアプリケーションとオペレーティングシステムとの間に配置され、アプリケーションを実行できる仮想環境を提供するレイヤを意味する。この仮想環境にはいくつかの目的がある。第1の目的は、実行されているアプリケーションによってクライアントコンピュータが変更されることを防止することである。アプリケーションがクライアントコンピュータの基本オペレーティングシステム設定の変更を試みると、この設定は保護され、仮想環境でのみ変更が「行われる」。たとえば、アプリケーションがMSVCRT.DLLなどの共有オブジェクトのバージョンを変更しようとすると、この変更がアプリケーションだけにとどめられ、クライアントコンピュータに常駐するコードは影響を受けない。
【0011】
第2の目的は、インストールを実行しないでもインストール環境であるようにみえる環境(すなわち「擬似インストール」または「インストールのような」環境)を、実行されているアプリケーションに提供することである。アプリケーションの実行時、またはアプリケーションが特定の設定を必要としているちょうどのタイミングですべての設定が仮想環境にもたらされる。たとえば、Adobe Photoshop(R)などのコンピュータプログラムが、一連のWindows(登録商標) RegistryエントリがHKEY_LOCAL_MACHINE¥Software¥Adobeにあると想定している場合に、Photoshopがインストールされていないためクライアントコンピュータ上のHKEY_LOCAL_MACHINE¥Software¥Adobeにこれらのエントリが存在しなければ、本発明のこの態様に従うシステムは、あたかもクライアントコンピュータ上に常駐するかのように、これらのレジストリエントリをPhotoshopプログラミングコードに対して「示す」。
【0012】
次に、本発明は、クライアント/ユーザーマシン上に存在する可能性がある情報によってアプリケーションの動作が干渉または変更されることを防止する。たとえば、ユーザーがHKEY_LOCAL_MACHINE¥Software¥Adobeの下にPhotoshopの古いバージョン用のレジストリエントリが既に存在している状態で、新しいバージョンを稼動したい場合、これらのエントリを新しいアプリケーションから隠して競合を防ぐことができる。
【0013】
最後に、本発明は、アプリケーションが現在書き込まれているため存在しない可能性があるアプリケーション動作をアンロックする。このアンロックが可能なのは、管理設定に従って仮想環境を動的に変更できるからである。たとえば、企業向けソフトウェアアプリケーションの典型的な例では、クライアントアプリケーションは、ユーザーがレジストリ内の設定から接続する必要があるデータベースのアドレスについての設定を読み取ることを期待することがある。このレジストリキーはHKEY_LOCAL_MACHINEに格納されることが多いため、この設定はクライアントコンピュータ全体に適用される。ユーザーが複数のデータベースに接続するには、クライアントを再インストールするか、またはこのレジストリキーの変更方法を知ってアプリケーションを実行するたびにレジストリキーを変更しなければならない。しかし、本発明を実現する場合、アプリケーションの2つのインスタンスを同じクライアントコンピュータ上で実行し、それぞれのインスタンスを異なるデータベースに接続できるようになる。
【0014】
コンテキスト
この機能があるため、システム内のプライベートコンテキストで各アプリケーションを実行することができる。アプリケーションに対してシステムがどのように見えるか、およびその挙動特性についてプライベートビューが与えられる。本発明は、その固有の性質によってこれを実現する。図2では、2つの個別アプリケーション(52と54)または同じアプリケーション(図1の50)の2つのインスタンスにプライベートコンテキストを提供することができる。このプライベートコンテキストでは、これらのアプリケーションまたはインスタンスが、システムサービス、構成、およびデータの個別コピーまたは異なるコピーを持つようにみえる。好ましい実施態様では、これがシステムの既定動作である。
【0015】
この着想を拡張することで、本発明のオペレーティングシステムガード(100)は、複数のアプリケーション(52と54)が一部またはすべての仮想設定を共有できるような、共有・制御されたコンテキストを提供することもできる。このことは、Microsoft Officeなどのアプリケーションスイートや、別のアプリケーションが存在すると動作が異なってくるアプリケーションにとって重要である。たとえば、メールマージや文書作成機能を実行するためのエンジンとしてMicrosoft Wordが多くのアプリケーションで使用されている。このようなアプリケーションはWordのインストールまたは有無に関する情報を知り、Wordの機能を利用できなければならない。好ましい実施形態では、同じアプリケーションの2つのインスタンスが既定で単一のコンテキストを共有し、一方、2つの別個のアプリケーションがプライベートコンテキストを維持する。図3に示したように、2つのアプリケーション(52と54)を実行可能であり、オペレーティングシステムガード(100)が、利用可能なシステムリソースの共有ビューを提供する。
【0016】
設計
図4に示したように、オペレーティングシステムガードは次のサブシステムから構成される。すなわち、コア(102)、構成マネージャ(104)、ファイルマネージャ(106)、共有オブジェクトマネージャ(108)、デバイスマネージャ(110)、フォントマネージャ(112)、プロセスマネージャ(120)、プロセス環境マネージャ(114)、ローダー(116)、およびリカバリマネージャ(118)から構成される。コア(102)、プロセスマネージャ(120)、およびローダー(116)を除くすべてのサブシステムは、以下で詳述する仮想化システムの要素である。コア(102)は主として、アプリケーションと、構成ファイルで定義されるアプリケーションのコンテキストを管理する。
【0017】
オペレーティングシステムガードのプロセスマネージャ(120)によって、当該のプロセスまたはスレッドイベントをコア(102)に通知できるようになる。また、プロセスマネージャ(120)は、プロセス空間の管理とスレッド処理のために、オペレーティングシステムに依存する実現化に対して抽象化レイヤを提供する。プロセスをまとめてアプリケーションバンドルにすることができる。アプリケーションバンドルとは、すべてが互いに仮想リソースを共有するプロセスのグループである。たとえば、Microsoft WordとMicrosoft Execlがアプリケーション一式として協働するために、仮想レジストリと仮想ファイルシステムを共有する場合がある。プロセスマネージャ(120)は、これらのアプリケーションバンドルを「アプリケーション」とみなす。プロセスマネージャ(120)がアプリケーションの解放を指示されるまで、アプリケーションに関する情報が存在する。別のプロセスをアプリケーションバンドルにロードする必要がある場合、アプリケーションが解放されていない限りロードが可能である。
【0018】
本発明のローダーサブシステム(116)を使用すれば、実行されているシステムに仮想環境を転送したり、システムから仮想環境を転送することができる。ローダー(116)。仮想化サブシステムそれぞれは、ローダー(116)に対して構成をシリアル化し、リバースプロセスを通じて構成を取得することができる。さらに、ローダー(116)は段階的ロード/アンロードを実行し、個々の段階の結果を組み合わせて単一の環境記述にすることができる。
【0019】
レジストリと構成
アプリケーションを正しく動作させるには、様々な量の構成情報が必要である。アプリケーションが構成を読み取ることができる構成レコードの数は、ゼロから数千の範囲におよぶ。Windows(登録商標)では、構成情報が一般に格納される場所が2つある。すなわち、Windows(登録商標) Registryとシステムレベル初期化ファイル(win.iniおよびsystem.ini)である。さらに、¥WINDOWS(登録商標)¥SYSTEMディレクトリは、アプリケーションがアプリケーション固有の構成または初期化ファイルをよく書き込む場所である。また、アプリケーションは、ローカルアプリケーションディレクトリ内の構成ファイルまたはデータファイルを使用して、追加情報を格納する。この情報が独自仕様の形式であるため扱いにくいことが多い。Windows(登録商標)以外のプラットフォームにはRegistryに相当するものはないが、構成情報がよく格納されるディレクトリが存在する。X Windows(登録商標)には、app−defaultsディレクトリがある。MacintoshにはSystem Folderがあり、その他のオペレーティングシステムには対応する要素が存在する。また図2に示したように、ほとんどのUNIX(登録商標)システムでは、個々のアプリケーション(52と54)それぞれがその構成(152と154)をローカルに格納することがほとんどである。
【0020】
本発明の一実施態様には、仮想Windows(登録商標) Registryコンポーネントが含まれる。このコンポーネントは全機能レジストリをアプリケーションに提供するが、基本システムレジストリに対する変更は防止する。アプリケーションがアクセスすることを期待するキーはすべて存在するが、これらのキーは仮想レジストリにのみ存在することができる。この方法では、本発明のオペレーティングシステムガード(100)とWindows(登録商標) Registryが、レジストリにアクセスするための2段階プロセスを形成する。アプリケーションがキーへのアクセスを必要とする場合、アプリケーションはRegistryに問い合わせる。オペレーティングシステムガードは、キーおよびキーの値(値を知っている場合)で応答する。そうでない場合、オペレーティングシステムガードは要求をWindows(登録商標) Registryまで通過させることを許可する。値の変更が試みられた場合、オペレーティングシステムガードは、それ自身に対する変更のみ許可する。次回アプリケーションがキーにアクセスするとき、そのキーはオペレーティングシステムガード内に存在し、要求は実際のRegistryまで流れ込まず、変更されない。
【0021】
オペレーティングシステムガードが使用するキーは、3つの個別セクションで指定される。これらのオペレーティングシステムガードキーはこれらのセクションで、既存キーの変更、キーの存在の削除、またはレジストリへの新しいキーの追加のためのコマンドとして指定される。このようにして、仮想レジストリは、全くシステムの意図通りに出現することができる。このことは、キーの有無がキーの実際の値と同じ程度に重要になることができるため、重要である。
【0022】
好ましい実施態様では、オペレーティングシステムガードはまず、アプリケーションに対する基本レジストリエントリを含むデータファイルをロードする。次に、ユーザーの基本設定を含む第2のデータファイルがロードされる。最後に、オペレーティングシステムガードは、ユーザーが上書きを禁止されているポリシー項目を含む一連のキーを任意にロードできる。この3つのファイルは順にロードされ、各ファイル内に重複する項目がある場合、前のファイル内の項目が上書きされる。ユーザーが初めてアプリケーションを実行するとき、ユーザー固有の情報が存在せず、アプリケーション既定情報のみ存在するため、第2のデータファイルは存在しない。しかし、各セッションの後、オペレーティングシステムガードはユーザーの変更内容を保存し、将来のセッションで使用するために第2のデータファイルを生成する。
【0023】
構成ファイルを2つの方法で変更できる。第1の方法では、構成ファイルをアプリケーションによって直接編集できる。この方法では、後述するオペレーティングシステムガードのファイルサブシステムがファイルへの変更を扱う。好ましい実施形態である第2の方法では、アプリケーションがWindows(登録商標) API関数GetProfileStringやWriteProfileStringなどを呼び出して、これらのファイルを変更することができる。この方法では、本発明のオペレーティングシステムガードが上述のとおりこれらの呼び出しを横取りし、内部からこれらの呼び出しを実行する。
【0024】
共有オブジェクト
オペレーティングシステムおよび実行されているアプリケーションで使用される多くのコンポーネントは、複数のアプリケーションまたはインスタンスで共有される。一般に、これは優れた方法である。この方法では、ディスク容量を節約でき、同じファイルを数多くコピーする必要がない。また、頻繁に使用されるコードのライブラリをオペレーティングシステムベンダーとサードパーティが作成・配布できるようになる。Windows(登録商標)プラットフォームでは、DLL(ダイナミックリンクライブラリ)がアプリケーション内や複数のアプリケーション間で共有されることが多い。その他のプラットフォームでも、問題は同じである。Macintoshでは、INITおよびその他のシステムコンポーネントがアプリケーション用にロードされる。これらのコンポーネントには複数のバージョンが存在し、一度に使用されるのがそれらのうちの1つのみである場合がある。UNIX(登録商標)システムでは、ロード時間の短縮やディスク容量の節約などの理由で動的共有オブジェクト(たとえば”.so”ライブラリファイル)がアプリケーションで使用される。多くのプログラムでは既定の”libc.so”が使用されるが、このライブラリファイルはlibc.so.3など一部のバージョンへのシンボリックリンクであることが多い。実際には、この機能が大きな混乱を招いてきた。これらの共有コンポーネントは改訂されることが多く、同じコンポーネントの複数のバージョンがインストールされる。アプリケーション作成者は、作成したソフトウェアが共有コンポーネントの1つまたは一部のバージョンとのみ動作できることを知っている。このため実際には、アプリケーションは希望のバージョンをインストールして、その他のバージョンを上書きすることが一般的である。その結果、同じシステム上で実行されている別のアプリケーションが動作できなくなる可能性がある。
【0025】
Windows(登録商標) 98とWindows(登録商標) 2000においてMicrosoftが開発したWindows(登録商標) Protected File System(WPFS)により、システム管理者はアプリケーションのベースディレクトリにXXXXLOCAL(XXXXは拡張子のない実行可能ファイル名)と呼ばれるファイルを作成できる。これにより、Windows(登録商標) LoaderがLoadLibraryの実行中にパス参照を解決する方法を変更する。ただし、問題を完全に解決するにはこれでは不十分である。不十分である第1の理由は、XXXXファイルのセットアップの成否がシステム管理者の知識に左右されるからである。システム管理者の知識は、人によって大きな差がある。第2の理由は、コンポーネントのバージョンを元に戻してからローカルディレクトリにインストールし、次に”.LOCAL”ファイルを作成しなければならないからである。これは、WINDOWS(登録商標)¥SYSTEMに配置された最も基本的なコンポーネントを除いては、簡単なプロセスではない。さらに、この解決法では、必要とされる機能すべてに対処できるわけではない。LoadLibraryの実行中、Windows(登録商標)は、コンポーネントが明示的または非明示的なLoadLibraryのどちらの結果として解決されたか、また、有名な(または周知の)DLLであることを示すRegistry Keyが存在するかどうかに応じて、異なるパス解決セマンティクスを使用する。このケースでは、LoadLibrary呼び出しは常にWINDOWS(登録商標)¥SYSTEMディレクトリに解決される。
【0026】
DLLおよびその他の共有コンポーネントは、実行されているアプリケーションが参照していない場合はコンポーネントが変更されないことを保証するために、参照カウントセマンティクスも保持する。実際には、オペレーティングシステムベンダーのアプリケーションとオペレーティングシステム自体のみ、この規約に従うことができる。
【0027】
原則として、常に共有オブジェクトが正しいコンポーネントに帰着するよう解決されることが望ましい。この機能を実現するには、アプリケーションがともに動作できるコンポーネントのバージョンまたはバージョンの範囲を知る必要がある。次に、アプリケーションの実行時に、本発明はコンポーネントが正しく解決されることを保証することが望ましい。本発明では、機能能力があれば、必要な場合はWPFSまたはその他のオペレーティングシステムを自動的に使用することも許容される。この場合、必要なコンポーネントを検出してローカルファイルシステムに配置する必要がある。この処理は、インストールの単なる監視よりも複雑である。なぜならば、必要なコンポーネントが既にインストールされている場合、インストールプログラムはコンポーネントをインストールしないことが多いからである。
【0028】
名前付きオブジェクトが正しくロードされることも保証する方法を識別する必要性がある。Windows(登録商標)プラットフォームでは、MSVCRT.DLLがこの問題の大きな原因である。このオブジェクトの複数のバージョンが維持されている場合、上述のRegistryキーを動的に変更して、LoadLibrary関数で正しいコンポーネントバージョンを解決することができる。正しいコンポーネントのロードを保証するもう1つの妥当な方法は、有効な検索パスを使用するようにプロセス環境を動的に編集することである。この検索パスによって、システムワイドコンポーネントの前にローカルコンポーネントが必ず解決される。正しい共有オブジェクトを解決する別の方法は、シンボリックリンクを使用することである。共有コンポーネントに対してシンボリックリンクを作成すれば、実行時にコンピュータのファイルシステムによって共有コンポーネントを必要なコンポーネントに帰着するよう解決することができる。最後の方法として、共有オブジェクトのファイルからの情報に対する実際のオープン/読み取り/クローズ要求を本発明によって中断し、ローカルシステム上または本発明のサブシステム内に存在する可能性があるファイルの正しいバージョンに向けて動的に応答することができる。
【0029】
いくつかの特別な形態が存在する。Windows(登録商標)プラットフォームでは、実行中の複数またはすべてのプロセス間でグローバルに共有するように、OLE、ODBC、MDAC、およびその他のベンダー固有の多数のコンポーネントが書き込まれている。OLEの場合は、個別プロセス間でデータおよびメモリー空間でさえも共有される。これらのコンポーネントの多くと同様に、OLEはOLE自身の複数のコピーが一度に実行されることを防止する。またOLEには、特定のアプリケーションについて特定バージョンのロードを必要とするバグと機能が多く存在する。本発明では、アプリケーションが必要とされるOLEのバージョンをどれでもロードすることができ、同じバージョンのOLEを使用する別のコンポーネントとセマンティクスを共有することも可能である。
【0030】
一般に、明確に構成されていない場合は、競合防止のために共有オブジェクトをプライベートにロードする必要がある。コンポーネントをプライベートにロードするための方法は、コンポーネントの完全なアンロードや別のソフトウェアアプリケーション(オペレーティングシステムガードによってアクティブに管理されているかどうかにかかわらず)に対する正しいコンポーネントのロードを妨げてはならない。さらに、システムがクラッシュした場合、基本オペレーティングシステムが上書きまたは変更されていないクリーンな状態に回復する必要がある。
【0031】
ファイル
多くのアプリケーションは、設定エントリまたはその他のアプリケーションデータを格納するためにアプリケーション内でデータファイルを使用する。本発明は、上記の仮想レジストリに酷似した仮想ファイルシステムを提供する。アプリケーションが起動する前に、本発明はファイルシステム変更内容のリストをロードすることができる。変更内容には、ファイルを隠すこと、仮想環境にファイルを追加すること、仮想環境内の別のファイルへファイルをリダイレクトすることなどが含まれる。アプリケーションがファイルにアクセスしたりファイルを変更した場合は必ずオペレーティングシステムガードが、そのファイルをリダイレクトする必要があるかどうかをチェックし、リダイレクトする必要がある場合、好ましい実施形態では、その要求をオペレーティングシステムガード構成で指定された場所にリダイレクトする。
【0032】
ユーザーのローカルドライブに書き込むためにアプリケーションが新規ファイルの作成または既存ファイルのオープンを試みた場合、オペレーティングシステムガードは、リダイレクトされた場所でそのファイルが実際に作成または変更されることを保証しなければならない。後でアプリケーションが再ロードされる場合、このファイルマッピングをオペレーティングシステムガードの仮想環境に再ロードする必要がある。ユーザーのローカルドライブ上に常駐する既存ファイルの変更要求があった場合、オペレーティングシステムガードはそのファイルをリダイレクションポイントにコピーしてから、要求を継続しなければならない。ファイルパスの安全なマッピングを保証するために、リダイレクトされたファイルは元のファイルと同じ名前であってはならない。好ましい実施形態では、システムのセキュリティとアプリケーションの互換性を最大限確保するために、INIファイルをこのように扱う。
【0033】
本発明は、ネットワークを介して配布されるアプリケーションに対して特に有用である。このような実現化では、ソフトウェアアプリケーションが複数種類のデータから構成されることを理解することが重要であり、ソフトウェアアプリケーションで使用されるファイルの大部分を個別の論理ドライブに格納することが最も望ましい。ファイルベースとレジストリベースの両構成は、ユーザー固有であってもシステムワイドであってもよい。使用されるアプリケーション配布システムは、各ファイルがこれらの種類のいずれであるかをマークする必要がある。この情報は、オペレーティングシステムガードシステムが適切に動作するために役立つ。
【0034】
デバイスドライバ
多くのアプリケーションは、ハードウェアサポートまたはオペレーティングシステムとの低レベルの直接的相互作用など一部の機能を実現化するために、デバイスドライバまたはその他のオペレーティングシステムレベルソフトウェアを使用する。本発明では、オペレーティングシステムガードが、これらのコンポーネントをアプリケーションの仮想環境に対して動的に、そして、なるべくプライベートに追加および削除する機能を提供する。
【0035】
多くのデバイスドライバは、動的にロード可能であるように構築される。可能であればすべてのデバイスドライバを動的にロードすることが、好ましい実施形態である。起動時にデバイスドライバを静的にロードする必要がある場合、アプリケーションを実行する前にユーザーはこの知識を得ていなければならない。システムを再起動した場合、アプリケーションを前回停止したところから継続することが望ましい。しかし、デバイスドライバのほとんどは動的にアンロードすることができない。ドライバを動的にアンロードしないことが望ましいが、これが実現できない場合は、次回の再起動時に削除するようにドライバがマークされる。ユーザーにこのことを通知することが望ましい。次回の再起動の前のアプリケーション実行が2度目である場合、システムはドライバが存在することを認識し、2度目のインストールを試みずに、終了を待ってから次回の再起動時に削除可能なコンポーネントを認識することが望ましい。
【0036】
本発明を正しく機能させるには、各デバイスドライバクラスについて基本的な類似点と相違点を特徴づけることが大切である。常駐するシステムハードウェア用のデバイスドライバをロード・アンロードすることは望ましくない。プログラミングの容易さという点ではこれは好ましい実施形態ではないが、本発明の範囲を逸脱するものではなく、特別な理由で必要とされることがある。たとえば、本発明を使用して配布・実行されるアプリケーションの使用許諾を制限する場合である。
【0037】
Microsoft以外のプラットフォームでは、デバイスドライバの扱いが異なることが多い。Macintoshシステムは静的ドライバと動的ドライバの双方をサポートするが、両ドライバはすべて同じ方法でインストール・削除される。Macintoshシステムフォルダにリンクすることにより、必要なサポートが提供される。UNIX(登録商標)システムではほとんどの場合、デバイスドライバを使用するために、実行中のUNIX(登録商標)カーネルを変更した後で再起動しなければならない。このプロセスは非常に複雑な場合がある。好ましい実施形態では、このプロセスが自動化される(アプリケーション完了後のカーネルリセットなど)。このプロセスの一般的条件は、Windows(登録商標)アプリケーションについて説明した条件(実際の編集処理段階)と同じであり、このようなオペレーティングシステムに熟知したユーザーは再起動を実行することができる。
【0038】
最後に、システム障害が発生した場合にドライバを回復・削除できることが望ましい。したがって、システムの完全性を保持するために必要なデータまたはプロセスはすべて本発明の好ましい実施形態である。さらに、いずれの種類のデバイスドライバも本発明によって都合良くまたは効果的に提供されるとは限らず、このことは、特に常設のハードウェアの付加デバイスに関連するものに成り立つこともまた当業者に了解されることである。
【0039】
その他の項目
本発明では、代替オペレーティングシステム上ではそれらの動作または存在形態が異なるものとなる発明のいくつかのコンポーネントのあることが認められる。これらのコンポーネントには、フォント、プロセス、環境変数などが含まれる。
【0040】
一部のアプリケーションでは、正しく実行するためにフォントをインストールしなければならない。必要なフォントはいずれも、オペレーティングシステムガードの構成ファイルで指定される。オペレーティングシステムガードはアプリケーションの実行に先立ってこれらのフォントを有効にし、必要であれば、実行後にフォントを削除する。ほとんどのシステムには、フォントを登録するプロセスまたはフォントの存在をシステムに通知するプロセスの他に、フォントを格納する共有領域があり、オペレーティングシステムガードはこれらの利用可能な方法を活用する。
【0041】
Windows(登録商標)では、フォントは¥WINDOWS(登録商標)¥FONTSディレクトリにコピーされる。ただし、これによって、実行中のプログラミングでそのフォントが利用できることが保証されるわけではない。好ましい実施形態では、プログラムがWindows(登録商標) APIを使用してフォントにアクセスする場合、CreateScalableFontResource/AddFontResourceなどのWin32 API呼び出しでフォントを登録する必要がある。これにより、フォントがシステムフォントテーブルに挿入される。挿入が完了すると、オペレーティングシステムガードは別の適切なAPI呼び出し(RemoveFontResourceなど)でフォントを削除し、システムからファイルを削除することができる。別の実施形態として、オペレーティングシステムガードは仮想レジストリ方法で説明したようにAPI関数をフックすることができる。さらに、オペレーティングシステムガードはファイルサブシステムを使用して、実際のフォントファイルが実行されているシステムに配置されることを防止することができる。
【0042】
Macintoshでは、このプロセスは酷似しており、Macintoshシステムフォルダ内のファイルと登録アクティブ化に基づいている。しかしUNIX(登録商標)では、このプロセスはアプリケーションに依存する。最も一般的には、適切な場所で解決された通常ファイルとしてフォントリソースがシステムに追加されるため、フォントリソースに名前でアクセスすることができる。多くのMotifシステムでは、フォント記述をフォントリソースファイルに配置する必要がある。これにより、フォントの解決が可能になる。MotifまたはXアプリケーションは、解決サブシステムまたはた直接呼び出しのいずれかでフォントを呼び出すことができる。最近では、MotifおよびCDEベースシステムの多くで、Adobeスケーラブルポストスクリプトフォントが利用されている。このフォントは、Adobeタイプ管理システムで管理する必要がある。ただし例外があり、上述のように、Windows(登録商標)またはその他のオペレーティングシステムの既定フォント管理システムに代わるシステムが存在する。Adobe Type Managerは、他のサードパーティのタイプ管理システムと同様に、このプロセスに代替インタフェースを提供する。ほとんどの場合、このインタフェースをサポートするか無視するかを決めることが望ましい。オペレーティングシステムガードの目的は、これらのシステムすべてに対応する汎用インタフェースを提供することではなく、オペレーティングシステム固有のサブシステムに対応するインタフェースのみ提供することである。
【0043】
環境変数の設定を必要とするアプリケーションが多い。このことはUNIX(登録商標)システムに最もよく当てはまるが、当初UNIX(登録商標)上で書き込まれWindows(登録商標)オペレーティングシステムに移植されたソフトウェアでも環境変数が頻繁に使用される。Windows(登録商標)オペレーティングシステム上のアプリケーションはDOS PATH環境変数に強く依存し、アプリケーション固有のエントリを設定することが多い。Windows(登録商標) 9x/Me環境では、基本的にはDOSサブシステムであるため適用可能である多くの環境設定が存在する。アプリケーションが特定の変数を必要とする場合、または既存の環境変数に値を設定する必要がある場合、必要な環境変数はオペレーティングシステムガードの構成ファイルで指定される。オペレーティングシステムガードは、起動時にアプリケーションのメインプロセスに対してこれらの変数を設定する。アプリケーションは通常、動作時に環境変数を変更しないため、仮想環境はこれらの呼び出しを捕捉せず、レジストリと構成サブシステムが提供する機能一式も提供しない。
【0044】
回復
これまで示してきたいくつかのケースでは、オペレーティングシステムを実際に変更しなければならない。デバイスドライバとフォントが変更されることが多い。さらに、次回のアプリケーション実行時にも存続し利用可能でなければならない仮想環境を変更することもできる。オペレーティングシステムガードはシステムに対する変更を回復し、できるだけ早くシステムから変更を除去できなければならない。別の方法では、アプリケーション実行時にシステムがクラッシュした場合、オペレーティングシステムガードは、再起動時などにシステムに対する変更を除去するために十分な情報を追跡し、仮想環境に対する変更を追跡することが望ましい。好ましい実施形態では、この追跡はトランザクションログとして実現化される。ただし別の実施形態では、変更を取り消すことができるようにシステムの起動時に読み取ることができる他の類似コンポーネントとして実現化することもできる。
【0045】
仮想化の制御
本発明の重要な態様は、オペレーティングシステムガードが実行できる仮想化の様々な局面の制御に関する。好ましい実施形態では、ソフトウェアシステムの正しい状態を確実に制御できる計装プログラムが存在する。また、システムによって仮想化される項目を管理者とエンドユーザーが視認および変更できるようにする方法も含まれる。
【0046】
自動プログラムでは、制御の状態を評価するために制御対象のアプリケーションが監視される。自動プログラムは、アプリケーションのインストールプロセス時、アプリケーションの実行時、またはその両方でこの監視タスクを実行できる。好ましい実施形態では、オペレーティングシステムガードがラッパーアプリケーションに組み込まれる。インストール後、またはソフトウェアを1回以上使用した後、ラッパーアプリケーションはソフトウェアの活動すべての詳細リストについてオペレーティングシステムガードに問い合わせる。この活動リストを基に、ラッパーアプリケーションは、以降の使用時にオペレーティングシステムガードをロードし作動させるために必要な構成ファイルを作成する。
【0047】
好ましい実施形態では、オペレーティングシステムをインストールプロセスの一部として使用する場合、オペレーティングシステムガードは、インストールをその環境にのみ入れることを許可する仮想レイヤとして機能する。インストール後、後の再ロードに備えてすべてのファイルや設定などをダンプすることができる。この方法では、インストールによって元のシステムが変更されることはなく、必要な構成ファイルが自動的に作成される。アプリケーションの使用中にオペレーティングシステムガードを使用すると、環境に対する差分変更の記録、または構成ファイルの再作成が可能になる。
【0048】
オペレーティングシステムガードは、後処理のために情報をラッパーアプリケーションに渡す。好ましい実施形態では、システムが作成できる自動エントリに加え、オペレーティングシステム固有、アプリケーション固有、またはドメイン固有の知識でラッパーアプリケーションがプログラムされる。この知識は、構成項目またはその他のエントリの周知の使用状況を反映するようにプロセスの出力を変更するために使用される。好ましい実施形態では、コーディングを変更するために、ルールベースシステムを利用して、監視された動作と周知のシナリオを比較する。
【0049】
ラッパーアプリケーションは、プロセスの構成出力に対するビューアおよび/またはエディタとしても使用される。好ましい実施形態では、このエディタを使用してシステム管理者は、構成に対する項目または項目グループの追加、編集、または削除ができる。エディタによって構成を観察する際、管理者は構成の複製を作成し、アプリケーションレベルの変更またはユーザー独自の変更を行うために必要に応じて特定の項目を変更することもできる。
【0050】
図1では、本発明の一実施形態の機能を示している。この実施形態では、アプリケーション/ユーザーデータ(60)が2セットある。オペレーティングシステムガード(100)は、アプリケーション(50)の2つのインスタンスが互いに干渉することを防止する。また上述のように、オペレーティングシステムガード(100)は抽象化レイヤとして機能し、クライアントコンピュータのアプリケーションソフトウェア(50)と実際のオペレーティングシステム(10)との間でコマンドと通信を収集する。矢印で示したように、一部のコマンドはオペレーティングシステムガードとソフトウェアアプリケーションとの間にある。このことが、一般的なインストールと違う点である。一般的なインストールでは、これらのコマンドはオペレーティングシステム自身によって実行されるため、オペレータの意図とは必ずしも一致しない変更がクライアントコンピュータに生じる。一方、その他のコマンドはオペレーティングシステムガードを経由してオペレーティングシステム自身に転送される。
【0051】
好ましい実施形態と合わせて本発明を詳述してきたが、添付した請求項によって網羅される本発明の範囲から逸脱することなく形態と詳細を様々に変更できることは当業者にとって理解されるであろう。
【図面の簡単な説明】
【0052】
【図1】本発明、オペレーティングシステム、およびソフトウェアアプリケーションの相対的関係を示すブロック略図である。
【図2】を示すブロック略図である。
【図3】を示すブロック略図である。
【図4】を示すブロック略図である。
【符号の説明】
【0053】
10:オペレーティングシステム
50:アプリケーション
52:アプリケーション1、インスタンス1
54:アプリケーション1、インスタンス2
60:アプリケーション/ユーザーデータ
100:オペレーティングシステムガード
102:コア
104:構成マネージャ
106:ファイルマネージャ
108:共有オブジェクトマネージャ
110:デバイスマネージャ
112:フォントマネージャ
114:プロセス環境マネージャ
116:ローダー(サブシステム)
118:リカバリマネージャ
120:プロセスマネージャ
152:構成
154:構成
Claims (17)
- クライアントコンピュータのオペレーティングシステムを変更することなくアプリケーションソフトウェア環境を作成するための、オペレーティングシステム抽象化/保護レイヤから成るシステムであって、実行されているソフトウェアアプリケーションと前記オペレーティングシステムとの間に前記抽象化/保護レイヤを挿入するようにし、これにより、アプリケーションを実行できる仮想環境を提供しアプリケーションレベル間の相互作用を実質的に除去するものであることを特徴とするシステム。
- オペレーティングシステムに対する直接的な変更が、実行されているアプリケーションのコンテキスト内で選択的に行われるものであることを特徴とする請求項1記載のシステム。
- 抽象化/保護レイヤが管理設定に従って仮想環境を動的に変更するものであることを特徴とする請求項2記載のシステム。
- システムが共有システムリソースの使用状況を継続的に監視し、システムコンポーネントに対する変更を適用および除去するサービスとして機能するものであることを特徴とする請求項1記載のシステム。
- オペレーティングシステムがWindows(登録商標)ベースのオペレーティングシステムであるようにし、Windows(登録商標) Registryと.iniファイルに対する操作はすべてWin32 APIによって行われるものであり、関数が呼び出されるたびに別の関数またはアプリケーションがその呼び出しを中断するように前記関数をフックするための手段からさらに有することを特徴とする請求項1記載のシステム。
- サーバーから実行されているアプリケーションによる要求であれ、アクティブに管理されている構成キーに対してアプリケーションが出した要求であれ、要求に応えるためにシステムが該当するAPI関数それぞれをフックするものであることを特徴とする請求項5記載のシステム。
- 前記オペレーティングシステム抽象化/保護レイヤは、実行されているアプリケーションインスタンスの数を認識することで、1つのアプリケーションの多重のインスタンスの統合を管理するものであることを特徴とする請求項1記載のシステム。
- 実行されているアプリケーションインスタンスが1つのみではない場合、前記オペレーティングシステム抽象化/保護レイヤは、起動時とシャットダウン時の変更を避けるものであることを特徴とする請求項7記載のシステム。
- 前記オペレーティングシステム抽象化/保護レイヤが、インストールを実行しないでもインストール環境のように出現する環境をアプリケーションに提供することにより、アプリケーションの実行時にすべての設定が仮想環境にもたらされる「擬似インストール」が作成されるものであることを特徴とする請求項1記載のシステム。
- クライアントコンピュータ上の情報によってアプリケーションの動作が干渉されたり変更されることを防止するための手段をさらに有することを特徴とする請求項9記載のシステム。
- 管理設定に従って仮想環境を動的に変更するための手段をさらに有することを特徴とする請求項9記載のシステム。
- 単一ソフトウェアアプリケーションの複数のインスタンスが同じクライアントコンピュータ上で実行されるものであり、前記複数のインスタンスの各々が1つの異なるデータベースに接続されるものであることを特徴とする請求項9記載のシステム。
- 単一アプリケーションの前記の複数のインスタンスのうち少なくとも2つが、1つ以上の仮想設定を共有するような、共有・制御されたコンテキストを提供するものであることを特徴とする請求項12記載のシステム。
- 特定のアプリケーションについてインストール時に命令を受け取るデバイスドライバモニターをさらに有することを特徴とする請求項1記載のシステム。
- 全機能レジストリをアプリケーションに提供するが、基本システムレジストリに対する変更は防止する仮想Windows(登録商標) Registryコンポーネントをさらに有することを特徴とする請求項1記載のシステム。
- キーおよびキーの値がオペレーティングシステム抽象化/保護レイヤに格納されている場合は、オペレーティングシステム抽象化/保護レイヤが前記キーおよびキーの値で応答し、格納されていない場合は、オペレーティングシステム抽象化/保護レイヤが要求をWindows(登録商標) Registryまで通過させることを許容するものであることを特徴とする請求項1記載のシステム。
- 前記キーの値の変更が試みられた場合、オペレーティングシステム抽象化/保護レイヤは、それ自身に対する変更のみを許容するものであることを特徴とする請求項16記載のシステム。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/859,209 US7028305B2 (en) | 2001-05-16 | 2001-05-16 | Operating system abstraction and protection layer |
PCT/US2002/015378 WO2002093369A1 (en) | 2001-05-16 | 2002-05-15 | Operating system abstraction and protection layer |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2004533054A true JP2004533054A (ja) | 2004-10-28 |
JP2004533054A5 JP2004533054A5 (ja) | 2008-01-10 |
JP4178036B2 JP4178036B2 (ja) | 2008-11-12 |
Family
ID=25330346
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002589978A Expired - Fee Related JP4178036B2 (ja) | 2001-05-16 | 2002-05-15 | オペレーティングシステム抽象化/保護レイヤ |
Country Status (8)
Country | Link |
---|---|
US (2) | US7028305B2 (ja) |
EP (1) | EP1419437B1 (ja) |
JP (1) | JP4178036B2 (ja) |
AU (1) | AU2002309834B2 (ja) |
CA (1) | CA2465880C (ja) |
ES (1) | ES2582164T3 (ja) |
TW (1) | TW588255B (ja) |
WO (1) | WO2002093369A1 (ja) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008509475A (ja) * | 2004-08-03 | 2008-03-27 | ソフトリシティ インコーポレイテッド | コンテキストポリシー制御によるアプリケーション間の関連付けの制御のためのシステムおよび方法 |
US7676813B2 (en) | 2004-09-30 | 2010-03-09 | Citrix Systems, Inc. | Method and system for accessing resources |
US7752600B2 (en) | 2004-09-30 | 2010-07-06 | Citrix Systems, Inc. | Method and apparatus for providing file-type associations to multiple applications |
JP2010205267A (ja) * | 2009-03-03 | 2010-09-16 | Symantec Corp | 仮想化サブレイヤを統合する方法およびシステム |
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 |
US7890570B2 (en) | 2007-09-12 | 2011-02-15 | Citrix Systems, Inc. | Methods and systems for providing, by a remote machine, access to graphical data associated with a resource provided by a local machine |
US7900240B2 (en) | 2003-05-28 | 2011-03-01 | Citrix Systems, Inc. | Multilayer access control security system |
US8117559B2 (en) | 2004-09-30 | 2012-02-14 | Citrix Systems, Inc. | Method and apparatus for virtualizing window information |
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 |
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 |
JP2013541113A (ja) * | 2010-10-27 | 2013-11-07 | マイクロソフト コーポレーション | ステートレスクラウドコンピューティング環境において動作するステートフルアプリケーション |
Families Citing this family (199)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6453334B1 (en) * | 1997-06-16 | 2002-09-17 | Streamtheory, Inc. | Method and apparatus to allow remotely located computer programs and/or data to be accessed on a local computer in a secure, time-limited manner, with persistent caching |
US20030055967A1 (en) * | 1999-05-17 | 2003-03-20 | David Dewitt Worley | Encapsulating local application environments in a cluster within a computer network |
US7096381B2 (en) * | 2001-05-21 | 2006-08-22 | Self Repairing Computer, Inc. | On-the-fly repair of a computer |
US7111201B2 (en) * | 2000-05-19 | 2006-09-19 | Self Repairing Computers, Inc. | Self repairing computer detecting need for repair and having switched protected storage |
US7137034B2 (en) * | 2000-05-19 | 2006-11-14 | Vir2Us, Inc. | Self repairing computer having user accessible switch for modifying bootable storage device configuration to initiate repair |
US20060277433A1 (en) * | 2000-05-19 | 2006-12-07 | Self Repairing Computers, Inc. | Computer having special purpose subsystems and cyber-terror and virus immunity and protection features |
US8831995B2 (en) * | 2000-11-06 | 2014-09-09 | Numecent Holdings, Inc. | Optimized server for streamed applications |
US7062567B2 (en) * | 2000-11-06 | 2006-06-13 | Endeavors Technology, Inc. | Intelligent network streaming and execution system for conventionally coded applications |
US7613930B2 (en) | 2001-01-19 | 2009-11-03 | Trustware International Limited | Method for protecting computer programs and data from hostile code |
US7392541B2 (en) * | 2001-05-17 | 2008-06-24 | Vir2Us, Inc. | Computer system architecture and method providing operating-system independent virus-, hacker-, and cyber-terror-immune processing environments |
US7849360B2 (en) * | 2001-05-21 | 2010-12-07 | Vir2Us, Inc. | Computer system and method of controlling communication port to prevent computer contamination by virus or malicious code |
US7509369B1 (en) * | 2001-07-11 | 2009-03-24 | Swsoft Holdings, Ltd. | Balancing shared servers in virtual environments |
US7624439B2 (en) * | 2001-10-29 | 2009-11-24 | Seventh Knight | Authenticating resource requests in a computer system |
US7536598B2 (en) * | 2001-11-19 | 2009-05-19 | Vir2Us, Inc. | Computer system capable of supporting a plurality of independent computing environments |
US20030115458A1 (en) * | 2001-12-19 | 2003-06-19 | Dongho Song | Invisable file technology for recovering or protecting a computer file system |
US7340777B1 (en) * | 2003-03-31 | 2008-03-04 | Symantec Corporation | In memory heuristic system and method for detecting viruses |
US7788699B2 (en) * | 2002-03-06 | 2010-08-31 | Vir2Us, Inc. | Computer and method for safe usage of documents, email attachments and other content that may contain virus, spy-ware, or malicious code |
US20030177214A1 (en) * | 2002-03-13 | 2003-09-18 | D-Link Corporation | Dynamic SNMP network device |
US20030221094A1 (en) * | 2002-04-17 | 2003-11-27 | Avery Pennarun | Method and system for configuring a computer |
GB0212314D0 (en) * | 2002-05-28 | 2002-07-10 | Symbian Ltd | Secure mobile wireless device |
AU2003243543A1 (en) * | 2002-06-12 | 2003-12-31 | Fslogic Inc. | Layered computing systems and methods |
US8010961B1 (en) | 2003-06-11 | 2011-08-30 | Symantec Corporation | Data layer prioritization in an application layered system |
US7512977B2 (en) * | 2003-06-11 | 2009-03-31 | Symantec Corporation | Intrustion protection system utilizing layers |
US7620956B2 (en) * | 2003-06-11 | 2009-11-17 | Symantec Corporation | Portable memory storage devices with application layers |
US7542988B1 (en) | 2006-01-03 | 2009-06-02 | Symantec Corporation | File type associative application layered system |
US7945897B1 (en) * | 2002-06-12 | 2011-05-17 | Symantec Corporation | Method and system for running an application in a clean operating environment using a layered computing system |
US7970789B1 (en) | 2003-06-11 | 2011-06-28 | Symantec Corporation | Sublayered application layered system |
US7877413B1 (en) | 2002-06-12 | 2011-01-25 | Symantec Corporation | Path variablizing layered system |
US7496931B2 (en) * | 2003-12-30 | 2009-02-24 | Symantec Corporation | Portable memory storage devices containing public context application layers |
US7549164B2 (en) * | 2003-06-11 | 2009-06-16 | Symantec Corporation | Intrustion protection system utilizing layers and triggers |
US7461096B1 (en) * | 2003-06-11 | 2008-12-02 | Symantec Corporation | Weighted prioritizing layered computing system |
US8843903B1 (en) | 2003-06-11 | 2014-09-23 | Symantec Corporation | Process tracking application layered system |
US8291407B2 (en) | 2002-06-12 | 2012-10-16 | Symantec Corporation | Systems and methods for patching computer programs |
US7886291B1 (en) * | 2003-06-11 | 2011-02-08 | Symantec Corporation | Layer typed prioritizing application layered systems |
US7461086B1 (en) | 2006-01-03 | 2008-12-02 | Symantec Corporation | Run-time application installation application layered system |
US7165260B2 (en) * | 2002-06-12 | 2007-01-16 | Fsl, L.L.C. | Layered computing systems and methods for insecure environments |
US7143615B2 (en) * | 2002-07-31 | 2006-12-05 | Sun Microsystems, Inc. | Method, system, and program for discovering components within a network |
TWI324309B (en) | 2002-08-26 | 2010-05-01 | Interdigital Tech Corp | Communication circuit |
US20080313282A1 (en) | 2002-09-10 | 2008-12-18 | Warila Bruce W | User interface, operating system and architecture |
US7673308B2 (en) * | 2002-11-18 | 2010-03-02 | Symantec Corporation | Virtual OS computing environment |
US7216367B2 (en) * | 2003-02-21 | 2007-05-08 | Symantec Corporation | Safe memory scanning |
US7509644B2 (en) * | 2003-03-04 | 2009-03-24 | Secure 64 Software Corp. | Operating system capable of supporting a customized execution environment |
US7461080B1 (en) | 2003-05-09 | 2008-12-02 | Sun Microsystems, Inc. | System logging within operating system partitions using log device nodes that are access points to a log driver |
US7337445B1 (en) | 2003-05-09 | 2008-02-26 | Sun Microsystems, Inc. | Virtual system console for virtual application environment |
US8892878B2 (en) * | 2003-05-09 | 2014-11-18 | Oracle America, Inc. | Fine-grained privileges in operating system partitions |
US7437556B2 (en) * | 2003-05-09 | 2008-10-14 | Sun Microsystems, Inc. | Global visibility controls for operating system partitions |
US20040226015A1 (en) * | 2003-05-09 | 2004-11-11 | Leonard Ozgur C. | Multi-level computing resource scheduling control for operating system partitions |
US7389512B2 (en) * | 2003-05-09 | 2008-06-17 | Sun Microsystems, Inc. | Interprocess communication within operating system partitions |
US20040226017A1 (en) * | 2003-05-09 | 2004-11-11 | Leonard Ozgur C. | Mechanism for associating resource pools with operating system partitions |
US7203696B2 (en) * | 2003-08-29 | 2007-04-10 | Microsoft Corporation | Dynamic registry partitioning |
US7451434B1 (en) * | 2003-09-09 | 2008-11-11 | Sap Aktiengesellschaft | Programming with shared objects in a shared memory |
US7519814B2 (en) * | 2003-09-15 | 2009-04-14 | Trigence Corp. | System for containerization of application sets |
US20080222160A1 (en) * | 2003-09-15 | 2008-09-11 | Macdonald Craig | Method and system for providing a program for execution without requiring installation |
US7774762B2 (en) | 2003-09-15 | 2010-08-10 | Trigence Corp. | System including run-time software to enable a software application to execute on an incompatible computer platform |
US7757291B2 (en) | 2003-09-15 | 2010-07-13 | Trigence Corp. | Malware containment by application encapsulation |
US7784058B2 (en) * | 2003-09-22 | 2010-08-24 | Trigence Corp. | Computing system having user mode critical system elements as shared libraries |
US20050091658A1 (en) * | 2003-10-24 | 2005-04-28 | Microsoft Corporation | Operating system resource protection |
US20050091535A1 (en) * | 2003-10-24 | 2005-04-28 | Microsoft Corporation | Application identity for software products |
US20050114870A1 (en) * | 2003-11-21 | 2005-05-26 | Song Dong H. | System and method for executing an application on a secured run-time environment |
CN1906573B (zh) * | 2004-01-20 | 2011-01-05 | 美国博通公司 | 支持多个用户的系统和方法 |
US20050283779A1 (en) * | 2004-05-19 | 2005-12-22 | Pronk Van Hoogeveen Joost W D | Method and apparatus for deploying software applications using a zone architecture |
EP1612977A3 (en) * | 2004-07-01 | 2013-08-21 | Yamaha Corporation | Control device for controlling audio signal processing device |
US7971255B1 (en) * | 2004-07-15 | 2011-06-28 | The Trustees Of Columbia University In The City Of New York | Detecting and preventing malcode execution |
US20060048136A1 (en) * | 2004-08-25 | 2006-03-02 | Vries Jeff D | Interception-based resource detection system |
US7690033B2 (en) | 2004-09-28 | 2010-03-30 | Exobox Technologies Corp. | Electronic computer system secured from unauthorized access to and manipulation of data |
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 |
US7748032B2 (en) | 2004-09-30 | 2010-06-29 | Citrix Systems, Inc. | Method and apparatus for associating tickets in a ticket hierarchy |
US7711835B2 (en) * | 2004-09-30 | 2010-05-04 | Citrix Systems, Inc. | Method and apparatus for reducing disclosure of proprietary data in a networked environment |
US7240162B2 (en) * | 2004-10-22 | 2007-07-03 | Stream Theory, Inc. | System and method for predictive streaming |
EP1825390A2 (en) * | 2004-11-13 | 2007-08-29 | Stream Theory, Inc. | Hybrid local/remote streaming |
US7653684B2 (en) * | 2004-12-03 | 2010-01-26 | Microsoft Corporation | Enabling inter-subsystem resource sharing |
US7451435B2 (en) * | 2004-12-07 | 2008-11-11 | Microsoft Corporation | Self-describing artifacts and application abstractions |
US8214830B2 (en) * | 2005-01-19 | 2012-07-03 | Intel Corporation | Performance in a virtualization architecture with a processor abstraction layer |
US8024568B2 (en) | 2005-01-28 | 2011-09-20 | Citrix Systems, Inc. | Method and system for verification of an endpoint security scan |
US7300621B2 (en) * | 2005-03-16 | 2007-11-27 | Siemens Power Generation, Inc. | Method of making a ceramic matrix composite utilizing partially stabilized fibers |
US8024523B2 (en) | 2007-11-07 | 2011-09-20 | Endeavors Technologies, Inc. | Opportunistic block transmission with time constraints |
US20060218165A1 (en) * | 2005-03-23 | 2006-09-28 | Vries Jeffrey De | Explicit overlay integration rules |
WO2006102621A2 (en) * | 2005-03-23 | 2006-09-28 | Stream Theory, Inc. | System and method for tracking changes to files in streaming applications |
US7707579B2 (en) | 2005-07-14 | 2010-04-27 | International Business Machines Corporation | Method and system for application profiling for purposes of defining resource requirements |
US7434218B2 (en) * | 2005-08-15 | 2008-10-07 | Microsoft Corporation | Archiving data in a virtual application environment |
US9286109B1 (en) | 2005-08-26 | 2016-03-15 | Open Invention Network, Llc | Method and system for providing checkpointing to windows application groups |
US7934216B2 (en) * | 2005-10-03 | 2011-04-26 | International Business Machines Corporation | Method and system for load balancing of computing resources |
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 |
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 |
JP2009512939A (ja) * | 2005-10-21 | 2009-03-26 | ヴァー2アス インコーポレイテッド | 複数のオペレーティングシステムのインスタンスが単一のマシン資源を安全に共有することを可能とする、オペレーティングシステムの仮想化、を有するコンピュータセキュリティ方法 |
US8150816B2 (en) * | 2005-12-29 | 2012-04-03 | Nextlabs, Inc. | Techniques of optimizing policies in an information management system |
US20070201270A1 (en) * | 2005-12-30 | 2007-08-30 | Stmicroelectronics Pvt. Ltd. | Read only memory device with bitline leakage reduction |
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 |
US7885975B2 (en) | 2006-02-23 | 2011-02-08 | Oracle America, Inc. | Mechanism for implementing file access control using labeled containers |
US7882227B2 (en) | 2006-02-23 | 2011-02-01 | Oracle America, Inc. | Mechanism for implementing file access control across a network using labeled containers |
US8938473B2 (en) | 2006-02-23 | 2015-01-20 | Oracle America, Inc. | Secure windowing for labeled containers |
US8938554B2 (en) | 2006-03-02 | 2015-01-20 | Oracle America, Inc. | Mechanism for enabling a network address to be shared by multiple labeled containers |
US9038071B2 (en) * | 2006-03-30 | 2015-05-19 | Microsoft Technology Licensing, Llc | Operating system context isolation of application execution |
CN100454260C (zh) * | 2006-04-20 | 2009-01-21 | 英业达股份有限公司 | 设备驱动层的虚拟驱动系统及方法 |
WO2007127349A2 (en) * | 2006-04-26 | 2007-11-08 | Exobox Technologies Corp. | Secure user environment software |
EP2407856A1 (en) | 2006-04-28 | 2012-01-18 | E-Bay Inc. | Method and system for user-designed application deployment |
US9213513B2 (en) * | 2006-06-23 | 2015-12-15 | Microsoft Technology Licensing, Llc | Maintaining synchronization of virtual machine image differences across server and host computers |
US9392078B2 (en) * | 2006-06-23 | 2016-07-12 | Microsoft Technology Licensing, Llc | Remote network access via virtual machine |
US9405521B2 (en) * | 2006-06-29 | 2016-08-02 | Microsoft Technology Licensing, Llc | Mapping of virtualized setup-free applications for a computing system |
US8131644B2 (en) | 2006-08-29 | 2012-03-06 | Sap Ag | Formular update |
US8261345B2 (en) | 2006-10-23 | 2012-09-04 | Endeavors Technologies, Inc. | Rule-based application access management |
US20080109466A1 (en) * | 2006-11-02 | 2008-05-08 | Microsoft Corporation | Virtual Deletion In Merged Registry keys |
ITVA20070042A1 (it) * | 2007-04-27 | 2008-10-28 | St Microelectronics Srl | Metodo di gestione di un dispositivo di memoria e relativo dispositivo di memoria |
US8533846B2 (en) | 2006-11-08 | 2013-09-10 | Citrix Systems, Inc. | Method and system for dynamically associating access rights with a resource |
US8875271B2 (en) | 2006-12-08 | 2014-10-28 | Microsoft Corporation | Executing unsigned content and securing access in a closed system |
WO2008092031A2 (en) | 2007-01-24 | 2008-07-31 | Vir2Us, Inc. | Computer system architecture having isolated file system management for secure and reliable data processing |
US20080222659A1 (en) * | 2007-03-09 | 2008-09-11 | Microsoft Corporation | Abstracting operating environment from operating system |
CA2682988A1 (en) * | 2007-04-05 | 2008-10-16 | Sentillion, Inc. | Augmenting a virtual machine hosting environment from within a virtual machine |
US9870263B2 (en) | 2007-06-29 | 2018-01-16 | Microsoft Technology Licensing, Llc | System virtualization instance management for terminal sessions |
US9128741B2 (en) * | 2007-10-05 | 2015-09-08 | Mcafee, Inc. | System, method, and computer program product for conditionally preventing use of hardware virtualization |
US8171483B2 (en) | 2007-10-20 | 2012-05-01 | Citrix Systems, Inc. | Method and system for communicating between isolation environments |
US8892738B2 (en) | 2007-11-07 | 2014-11-18 | Numecent Holdings, Inc. | Deriving component statistics for a stream enabled application |
FR2925269B1 (fr) * | 2007-12-19 | 2010-01-15 | Promiles | Sac a dos permutable en position frontale |
US20090164994A1 (en) * | 2007-12-20 | 2009-06-25 | Virtual Computer, Inc. | Virtual computing management systems and methods |
US7792934B2 (en) * | 2008-01-02 | 2010-09-07 | Citrix Systems International Gmbh | Loading of server-stored user profile data |
KR101489301B1 (ko) * | 2008-03-20 | 2015-02-06 | 삼성전자주식회사 | 가상환경 시스템 및 그의 구동방법 |
US8688641B1 (en) | 2008-03-31 | 2014-04-01 | Symantec Operating Corporation | Per user and per process layer visibility |
US8261254B2 (en) | 2008-03-31 | 2012-09-04 | Symantec Corporation | Dynamic insertion and removal of virtual software sub-layers |
US8438196B1 (en) | 2008-03-31 | 2013-05-07 | Symantec Operating Corporation | Finer grained data organization using data sublayers |
US8639734B1 (en) | 2008-03-31 | 2014-01-28 | Symantec Operating Corporation | Use of external information about a file to determine virtualization |
US8578364B2 (en) * | 2008-04-25 | 2013-11-05 | Microsoft Corporation | Dynamic management of operating system resources |
US9100246B1 (en) * | 2008-06-19 | 2015-08-04 | Symantec Corporation | Distributed application virtualization |
US8694989B1 (en) | 2008-07-17 | 2014-04-08 | Apple Inc. | Virtual installation environment |
US8745601B1 (en) * | 2008-07-17 | 2014-06-03 | Apple Inc. | Methods and systems for using data structures for operating systems |
US8315996B2 (en) * | 2008-08-13 | 2012-11-20 | International Business Machines Corporation | Efficient management of customized functionality within shared data objects |
US8135659B2 (en) | 2008-10-01 | 2012-03-13 | Sap Ag | System configuration comparison to identify process variation |
WO2010054019A1 (en) * | 2008-11-04 | 2010-05-14 | Quado Media Inc. | Multi-player, multi-screens, electronic gaming platform and system |
US9498711B2 (en) | 2008-11-04 | 2016-11-22 | Quado Media Inc. | Multi-player, multi-screens, electronic gaming platform and system |
US7984332B2 (en) * | 2008-11-17 | 2011-07-19 | Microsoft Corporation | Distributed system checker |
KR101437122B1 (ko) | 2008-12-03 | 2014-09-02 | 삼성전자 주식회사 | Os 가상화를 이용하여 서비스를 제공하는 장치 및 방법 |
US8396893B2 (en) * | 2008-12-11 | 2013-03-12 | Sap Ag | Unified configuration of multiple applications |
US8341631B2 (en) * | 2009-04-10 | 2012-12-25 | Open Invention Network Llc | System and method for application isolation |
US8464256B1 (en) | 2009-04-10 | 2013-06-11 | Open Invention Network, Llc | System and method for hierarchical interception with isolated environments |
US9354977B1 (en) * | 2008-12-15 | 2016-05-31 | Open Invention Network Llc | System and method for hybrid kernel- and user-space incremental and full checkpointing |
US8880473B1 (en) | 2008-12-15 | 2014-11-04 | Open Invention Network, Llc | Method and system for providing storage checkpointing to a group of independent computer applications |
US8782670B2 (en) * | 2009-04-10 | 2014-07-15 | Open Invention Network, Llc | System and method for application isolation |
US8539488B1 (en) | 2009-04-10 | 2013-09-17 | Open Invention Network, Llc | System and method for application isolation with live migration |
US9256496B1 (en) * | 2008-12-15 | 2016-02-09 | Open Invention Network, Llc | System and method for hybrid kernel—and user-space incremental and full checkpointing |
US8745442B1 (en) | 2011-04-28 | 2014-06-03 | Open Invention Network, Llc | System and method for hybrid kernel- and user-space checkpointing |
US10019327B1 (en) | 2008-12-15 | 2018-07-10 | Open Invention Network Llc | System and method for hybrid kernel- and user-space incremental and full checkpointing |
US8904004B2 (en) * | 2009-04-10 | 2014-12-02 | Open Invention Network, Llc | System and method for maintaining mappings between application resources inside and outside isolated environments |
US8255429B2 (en) | 2008-12-17 | 2012-08-28 | Sap Ag | Configuration change without disruption of incomplete processes |
US8418236B1 (en) | 2009-04-10 | 2013-04-09 | Open Invention Network Llc | System and method for streaming application isolation |
US8401941B1 (en) | 2009-04-10 | 2013-03-19 | Open Invention Network Llc | System and method for usage billing of hosted applications |
US11538078B1 (en) | 2009-04-10 | 2022-12-27 | International Business Machines Corporation | System and method for usage billing of hosted applications |
US10419504B1 (en) | 2009-04-10 | 2019-09-17 | Open Invention Network Llc | System and method for streaming application isolation |
US8555360B1 (en) | 2009-04-10 | 2013-10-08 | Open Invention Network Llc | System and method for on-line and off-line streaming application isolation |
US9577893B1 (en) | 2009-04-10 | 2017-02-21 | Open Invention Network Llc | System and method for cached streaming application isolation |
US9058599B1 (en) | 2009-04-10 | 2015-06-16 | Open Invention Network, Llc | System and method for usage billing of hosted applications |
US8401940B1 (en) | 2009-04-10 | 2013-03-19 | Open Invention Network Llc | System and method for usage billing of hosted applications |
US8090797B2 (en) | 2009-05-02 | 2012-01-03 | Citrix Systems, Inc. | Methods and systems for launching applications into existing isolation environments |
US8352937B2 (en) * | 2009-08-03 | 2013-01-08 | Symantec Corporation | Streaming an application install package into a virtual environment |
US8881140B1 (en) | 2009-09-04 | 2014-11-04 | Symantec Corporation | Systems and methods for virtualizing software associated with external computer hardware devices |
US8850428B2 (en) | 2009-11-12 | 2014-09-30 | Trustware International Limited | User transparent virtualization method for protecting computer programs and data from hostile code |
TWI410867B (zh) * | 2010-03-24 | 2013-10-01 | Acer Inc | 應用軟體的安裝方法 |
US8862545B2 (en) | 2010-06-15 | 2014-10-14 | Microsoft Corporation | Multi-environment configuration of data integration projects |
US9116728B2 (en) | 2010-12-21 | 2015-08-25 | Microsoft Technology Licensing, Llc | Providing a persona-based application experience |
US9003543B2 (en) | 2010-12-21 | 2015-04-07 | Microsoft Technology Licensing, Llc | Providing a security boundary |
US9354852B2 (en) | 2010-12-23 | 2016-05-31 | Microsoft Technology Licensing, Llc | Satisfying application dependencies |
US9189308B2 (en) | 2010-12-27 | 2015-11-17 | Microsoft Technology Licensing, Llc | Predicting, diagnosing, and recovering from application failures based on resource access patterns |
US8789138B2 (en) | 2010-12-27 | 2014-07-22 | Microsoft Corporation | Application execution in a restricted application execution environment |
US8931037B2 (en) | 2010-12-27 | 2015-01-06 | Microsoft Corporation | Policy-based access to virtualized applications |
US9176742B2 (en) | 2010-12-27 | 2015-11-03 | Microsoft Technology Licensing, Llc | Converting desktop applications to web applications |
US9223611B2 (en) | 2010-12-28 | 2015-12-29 | Microsoft Technology Licensing, Llc | Storing and resuming application runtime state |
US9116725B1 (en) | 2011-03-15 | 2015-08-25 | Symantec Corporation | Systems and methods for using virtualization of operating-system-level components to facilitate software testing |
US11307941B1 (en) | 2011-04-28 | 2022-04-19 | Open Invention Network Llc | System and method for hybrid kernel- and user-space incremental and full checkpointing |
US11625307B1 (en) | 2011-04-28 | 2023-04-11 | International Business Machines Corporation | System and method for hybrid kernel- and user-space incremental and full checkpointing |
US9117079B1 (en) * | 2013-02-19 | 2015-08-25 | Trend Micro Inc. | Multiple application versions in a single virtual machine |
US9225737B2 (en) | 2013-03-15 | 2015-12-29 | Shape Security, Inc. | Detecting the introduction of alien content |
US20140283038A1 (en) | 2013-03-15 | 2014-09-18 | Shape Security Inc. | Safe Intelligent Content Modification |
US9178908B2 (en) | 2013-03-15 | 2015-11-03 | Shape Security, Inc. | Protecting against the introduction of alien content |
US9338143B2 (en) | 2013-03-15 | 2016-05-10 | Shape Security, Inc. | Stateless web content anti-automation |
US8990839B2 (en) | 2013-04-22 | 2015-03-24 | Microsoft Technology Licensing, Llc | Controlling runtime access to application programming interfaces |
US9270647B2 (en) | 2013-12-06 | 2016-02-23 | Shape Security, Inc. | Client/server security by an intermediary rendering modified in-memory objects |
US8954583B1 (en) | 2014-01-20 | 2015-02-10 | Shape Security, Inc. | Intercepting and supervising calls to transformed operations and objects |
US9489526B1 (en) | 2014-01-21 | 2016-11-08 | Shape Security, Inc. | Pre-analyzing served content |
US9225729B1 (en) | 2014-01-21 | 2015-12-29 | Shape Security, Inc. | Blind hash compression |
US8893294B1 (en) | 2014-01-21 | 2014-11-18 | Shape Security, Inc. | Flexible caching |
KR101624170B1 (ko) | 2014-03-03 | 2016-05-25 | 주식회사 틸론 | 윈도우즈의 레지스트리를 이기종 운영체제의 ini파일로 변환하는 레지스트리변환방법, 컴퓨터 장치 및 컴퓨터에서 판독가능한 기록매체 |
US8997226B1 (en) | 2014-04-17 | 2015-03-31 | Shape Security, Inc. | Detection of client-side malware activity |
US9223966B1 (en) | 2014-05-04 | 2015-12-29 | Symantec Corporation | Systems and methods for replicating computing system environments |
US9858440B1 (en) | 2014-05-23 | 2018-01-02 | Shape Security, Inc. | Encoding of sensitive data |
US9411958B2 (en) | 2014-05-23 | 2016-08-09 | Shape Security, Inc. | Polymorphic treatment of data entered at clients |
US9405910B2 (en) | 2014-06-02 | 2016-08-02 | Shape Security, Inc. | Automatic library detection |
US9075990B1 (en) | 2014-07-01 | 2015-07-07 | Shape Security, Inc. | Reliable selection of security countermeasures |
US9003511B1 (en) | 2014-07-22 | 2015-04-07 | Shape Security, Inc. | Polymorphic security policy action |
US9825984B1 (en) | 2014-08-27 | 2017-11-21 | Shape Security, Inc. | Background analysis of web content |
US9438625B1 (en) | 2014-09-09 | 2016-09-06 | Shape Security, Inc. | Mitigating scripted attacks using dynamic polymorphism |
US9602543B2 (en) | 2014-09-09 | 2017-03-21 | Shape Security, Inc. | Client/server polymorphism using polymorphic hooks |
US9785425B2 (en) * | 2014-09-30 | 2017-10-10 | Airwatch Llc | Managed clone applications |
US9628279B2 (en) * | 2014-09-30 | 2017-04-18 | Microsoft Technology Licensing, Llc | Protecting application secrets from operating system attacks |
US9813440B1 (en) | 2015-05-15 | 2017-11-07 | Shape Security, Inc. | Polymorphic treatment of annotated content |
US9986058B2 (en) | 2015-05-21 | 2018-05-29 | Shape Security, Inc. | Security systems for mitigating attacks from a headless browser executing on a client computer |
WO2017007705A1 (en) | 2015-07-06 | 2017-01-12 | Shape Security, Inc. | Asymmetrical challenges for web security |
WO2017007936A1 (en) | 2015-07-07 | 2017-01-12 | Shape Security, Inc. | Split serving of computer code |
US9807113B2 (en) | 2015-08-31 | 2017-10-31 | Shape Security, Inc. | Polymorphic obfuscation of executable code |
US9785790B2 (en) | 2015-12-15 | 2017-10-10 | International Business Machines Corporation | Protecting computer security applications |
US10754829B2 (en) | 2017-04-04 | 2020-08-25 | Oracle International Corporation | Virtual configuration systems and methods |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5548779A (en) * | 1993-12-21 | 1996-08-20 | Taligent | System for providing system services for a device to a client using stack definition and stack description of a stack having top, intermediate, and bottom service objects |
US6763454B2 (en) * | 1994-05-27 | 2004-07-13 | Microsoft Corp. | System for allocating resources in a computer system |
US5961582A (en) * | 1994-10-25 | 1999-10-05 | Acorn Technologies, Inc. | Distributed and portable execution environment |
US5901312A (en) * | 1994-12-13 | 1999-05-04 | Microsoft Corporation | Providing application programs with unmediated access to a contested hardware resource |
US6601081B1 (en) * | 1995-06-30 | 2003-07-29 | Sun Microsystems, Inc. | Method and apparatus for context maintenance in windows |
US5752005A (en) | 1996-01-22 | 1998-05-12 | Microtest, Inc. | Foreign file system establishing method which uses a native file system virtual device driver |
US6023721A (en) | 1997-05-14 | 2000-02-08 | Citrix Systems, Inc. | Method and system for allowing a single-user application executing in a multi-user environment to create objects having both user-global and system global visibility |
US6134602A (en) * | 1997-09-24 | 2000-10-17 | Microsoft Corporation | Application programming interface enabling application programs to group code and data to control allocation of physical memory in a virtual memory system |
US6026402A (en) | 1998-01-07 | 2000-02-15 | Hewlett-Packard Company | Process restriction within file system hierarchies |
US6496847B1 (en) * | 1998-05-15 | 2002-12-17 | Vmware, Inc. | System and method for virtualizing computer systems |
US6789114B1 (en) * | 1998-08-05 | 2004-09-07 | Lucent Technologies Inc. | Methods and apparatus for managing middleware service in a distributed system |
KR20000057127A (ko) | 1999-02-03 | 2000-09-15 | 송동호 | 소프트웨어 임대 시스템을 위한 분산컴퓨팅 환경에서의프로그램 수행시스템 및 그 방법 |
US6640249B1 (en) * | 1999-08-31 | 2003-10-28 | Accenture Llp | Presentation services patterns in a netcentric environment |
EP1305688A2 (en) | 2000-05-28 | 2003-05-02 | Yaron Mayer | System and method for comprehensive general generic protection for computers against malicious programs that may steal information and/or cause damages |
-
2001
- 2001-05-16 US US09/859,209 patent/US7028305B2/en not_active Expired - Lifetime
-
2002
- 2002-05-15 ES ES02736858.8T patent/ES2582164T3/es not_active Expired - Lifetime
- 2002-05-15 AU AU2002309834A patent/AU2002309834B2/en not_active Ceased
- 2002-05-15 EP EP02736858.8A patent/EP1419437B1/en not_active Expired - Lifetime
- 2002-05-15 JP JP2002589978A patent/JP4178036B2/ja not_active Expired - Fee Related
- 2002-05-15 WO PCT/US2002/015378 patent/WO2002093369A1/en active Application Filing
- 2002-05-15 CA CA2465880A patent/CA2465880C/en not_active Expired - Fee Related
- 2002-05-16 TW TW091110230A patent/TW588255B/zh not_active IP Right Cessation
-
2004
- 2004-07-20 US US10/894,668 patent/US7451451B2/en not_active Expired - Fee Related
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7900240B2 (en) | 2003-05-28 | 2011-03-01 | Citrix Systems, Inc. | Multilayer access control security system |
US11693954B2 (en) | 2004-08-03 | 2023-07-04 | Microsoft Technology Licensing, Llc | System and method for controlling inter-application association through contextual policy control |
US10229265B2 (en) | 2004-08-03 | 2019-03-12 | Microsoft Technology Licensing, Llc | System and method for controlling inter-application association through contextual policy control |
JP2008509475A (ja) * | 2004-08-03 | 2008-03-27 | ソフトリシティ インコーポレイテッド | コンテキストポリシー制御によるアプリケーション間の関連付けの制御のためのシステムおよび方法 |
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 |
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 |
US8042120B2 (en) | 2004-09-30 | 2011-10-18 | Citrix Systems, Inc. | Method and apparatus for moving processes between isolation environments |
US8117559B2 (en) | 2004-09-30 | 2012-02-14 | Citrix Systems, Inc. | Method and apparatus for virtualizing window information |
US8132176B2 (en) | 2004-09-30 | 2012-03-06 | Citrix Systems, Inc. | Method for accessing, by application programs, resources residing inside an application isolation scope |
US7752600B2 (en) | 2004-09-30 | 2010-07-06 | Citrix Systems, Inc. | Method and apparatus for providing file-type associations to multiple applications |
US7680758B2 (en) | 2004-09-30 | 2010-03-16 | Citrix Systems, Inc. | Method and apparatus for isolating execution of software applications |
US7676813B2 (en) | 2004-09-30 | 2010-03-09 | Citrix Systems, Inc. | Method and system for accessing resources |
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 |
US7890570B2 (en) | 2007-09-12 | 2011-02-15 | Citrix Systems, Inc. | Methods and systems for providing, by a remote machine, access to graphical data associated with a resource provided by a local machine |
JP2010205267A (ja) * | 2009-03-03 | 2010-09-16 | Symantec Corp | 仮想化サブレイヤを統合する方法およびシステム |
JP2013541113A (ja) * | 2010-10-27 | 2013-11-07 | マイクロソフト コーポレーション | ステートレスクラウドコンピューティング環境において動作するステートフルアプリケーション |
Also Published As
Publication number | Publication date |
---|---|
EP1419437A1 (en) | 2004-05-19 |
US20040268361A1 (en) | 2004-12-30 |
WO2002093369A1 (en) | 2002-11-21 |
JP4178036B2 (ja) | 2008-11-12 |
US7451451B2 (en) | 2008-11-11 |
AU2002309834A2 (en) | 2002-11-25 |
CA2465880C (en) | 2011-10-11 |
CA2465880A1 (en) | 2002-11-21 |
ES2582164T3 (es) | 2016-09-09 |
US7028305B2 (en) | 2006-04-11 |
US20020174215A1 (en) | 2002-11-21 |
AU2002309834B2 (en) | 2007-11-01 |
EP1419437B1 (en) | 2016-06-08 |
TW588255B (en) | 2004-05-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4178036B2 (ja) | オペレーティングシステム抽象化/保護レイヤ | |
US11693954B2 (en) | System and method for controlling inter-application association through contextual policy control | |
US7165260B2 (en) | Layered computing systems and methods for insecure environments | |
US7162724B2 (en) | Layered computing systems and methods | |
AU2002309834A1 (en) | Operating system abstraction and protection layer | |
US7542988B1 (en) | File type associative application layered system | |
US7461086B1 (en) | Run-time application installation application layered system | |
US7970789B1 (en) | Sublayered application layered system | |
US7886291B1 (en) | Layer typed prioritizing application layered systems | |
US8010961B1 (en) | Data layer prioritization in an application layered system | |
US7945897B1 (en) | Method and system for running an application in a clean operating environment using a layered computing system | |
US7461096B1 (en) | Weighted prioritizing layered computing system | |
US7877413B1 (en) | Path variablizing layered system | |
US8843903B1 (en) | Process tracking application layered system | |
US6698016B1 (en) | Method for injecting code into another process | |
US20070113291A1 (en) | Method for administrating the function access | |
Vokorokos et al. | Application security through sandbox virtualization |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050328 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070507 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20070806 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20070821 |
|
RD03 | Notification of appointment of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7423 Effective date: 20071005 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20071018 |
|
A524 | Written submission of copy of amendment under article 19 pct |
Free format text: JAPANESE INTERMEDIATE CODE: A524 Effective date: 20071022 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20071022 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20080125 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20080425 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20080507 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080704 |
|
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: 20080729 |
|
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: 20080825 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110829 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 4178036 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110829 Year of fee payment: 3 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313111 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110829 Year of fee payment: 3 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110829 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120829 Year of fee payment: 4 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130829 Year of fee payment: 5 |
|
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 |
|
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 |
|
LAPS | Cancellation because of no payment of annual fees |