zoukankan      html  css  js  c++  java
  • 保護モードの Internet Explorer の理解と機能(IE7)

    Microsoft Corporation

    January 31, 2006

    日本語版最終更新日 2006 年 3 月 16 日

    対象製品 : Microsoft Internet Explorer 7 以降

    : この資料は暫定的なものであり、変更されることがあります。

    概要  Microsoft Windows Vista では、Microsoft Internet Explorer 7 は保護モードで実行されます。権限を大幅に制限して Internet Explorer プロセスを実行することによって、攻撃からユーザーを保護します。 保護モードは、ユーザーのマシン上でのデータの書き込み、変更、破壊や、あるいは悪意のあるコードのインストールといった攻撃の可能性を大幅に低減します。

    このトピックでは、保護モードの概要を説明します。保護モードを実装するために使用される Windows Vista の機能、および保護モードを処理する拡張機能を開発する方法について説明し、より安全に開発を行うためのガイドラインを提供します。

    目次

    保護モードの理解 保護モードの理解
    保護モードの操作 保護モードの操作
    安全な拡張機能の設計 安全な拡張機能の設計
    よく寄せられる質問 (FAQ) よく寄せられる質問 (FAQ)

    保護モードの理解

    保護モードは、Internet Explorer (IE) のセキュリティの重要な進歩です。Windows Vista では、権限が大幅に制限されて IE プロセスが実行されるため、ユーザーは攻撃から保護されます。 保護モードは、あらゆる形態の攻撃を防止し、ユーザーのマシン上でのデータの書き込み、変更、破壊や、悪意のあるコードのインストールといった攻撃の可能性を大幅に低減します。

    保護モードの概要

    Internet Explorer 7 のほとんどのセキュリティ機能は、Windows XP Service Pack 2 用の Internet Explorer 7 でも使用できますが、保護モードは、Windows Vista の新しいセキュリティ機能に基づいているため、Windows Vista でのみ使用できます。

    • ユーザー アカウント保護 (英語) (UAP) を使用すると、管理者特権なしに簡単に実行できます。 ユーザーが制限付きのユーザー特権でプログラムを実行すると、管理者特権で実行する場合よりも攻撃から保護されます。これは、Windows が悪意のあるコードによる破壊動作を禁止できるためです。

    • 整合性レベルは、プロセスごとにセキュリティ オブジェクト (英語) への書き込みアクセスを制限します。これはユーザー アカウント グループ メンバーシップによって、重要なシステム コンポーネントにアクセスするユーザー権限を制限するのと同じ方法です。

    • User Interface Privilege Isolation (英語) (UIPI) によって、プロセスが選択されたウィンドウ メッセージを整合性の高い状態で実行中のプロセスに送信することを防止します。

    Windows Vista のセキュリティ インフラストラクチャでは、保護モードによって通知なしにプログラムをインストールして重要なシステム データを変更する権限を禁止した状態で、Internet Explorer に Web を閲覧する権限を与えることができます。

    このセクションでは、保護モードに関する Windows Vista の整合性アクセス レベルおよび Internet Explorer 拡張機能の互換性への影響について説明します。

    Windows Vista の整合性機構の理解

    Windows Vista は、Windows のアクセス制御セキュリティ機構を備えており、プロセスおよび他のセキュリティ オブジェクトには整合性レベルのラベルが付加されます。 インターネットと通信するプログラムは、不明なソースから信頼性の低いコンテンツをダウンロードするため、他のプログラムよりも悪用されるリスクが高くなります。 他のプログラムよりもアクセス許可を減らすか、あるいは整合性レベルを低くしてこれらのプログラムを実行すると、システムの変更やユーザー データ ファイルの破損といった悪用の可能性が低減されます。

    保護モードは、Windows Vista の整合性機構を使用して、低い整合性で Internet Explorer プロセスを実行します。 Windows Vista の整合性レベル機構の主要な機能を以下に示します。

    • セキュリティ オブジェクト (英語) (ファイル、レジストリ キーなど) は、整合性レベル、つまりオブジェクトへの書き込みアクセスに必要な権限レベルを定義するセキュリティ記述子を備えます。 整合性レベルは、システム アクセス制御リスト (SACL) 内の新しい必須アクセス制御エントリ (ACE) によって定義されます。 この新しい必須の ACE は必須ラベルと呼ばれます。 必須ラベルのないオブジェクトには、既定の中間の整合性レベルが黙示的に設定されます。

    • プロセスの整合性レベルはセキュリティ アクセス トークンで定義されます。 保護モードでは、Internet Explorer のプロセス整合性レベルは低くなります。 [スタート] メニューから実行するアプリケーションには、中間の整合性レベルが設定されます。 管理者の許可が必要なアプリケーションは、高い整合性レベルで実行されます。

    • 整合性が低いプロセスは、DACL (Discretionary Access Control List) でユーザーの SID が許可されたものであっても、整合性レベルが高いオブジェクトへの書き込みアクセス権は取得できません。 整合性レベルの確認は、ユーザーのアクセス許可の確認前に実行されます。

    Windows Vista のすべてのファイルとレジストリ キーには、既定で中間の整合性レベルが設定されます。 保護モードの Internet Explorer などの整合性の低いプロセスが既存のファイルを変更しようとすると、アクセス拒否エラーを受け取ります。

    整合性が低い必須ラベルを持つフォルダもあります。 保護モードの Internet Explorer などの整合性が低いプロセスは、整合性が低いフォルダ内のファイルの作成および変更が可能です。 たとえば、Temporary Internet Files フォルダには、Low という整合性の低いフォルダがあります。 Windows Vista の整合性機構では、整合性の低いプロセスによって作成されたセキュリティ オブジェクトには、整合性の低い必須ラベルを自動的に割り当てます。 結果として、保護モードの Internet Explorer または整合性の低い他のプロセスによって作成されたすべてのファイルと他のオブジェクトには、整合性の低い必須ラベルが自動的に割り当てられます。 また、整合性の低いプロセスによって開始されるあらゆる子プロセスも、整合性レベルが低い状態で実行されます。

    次の表は、サポートされる整合性アクセス レベルとそれらが付与する権限を示します。

    整合性

    アクセス レベル

    システム特権

    管理者特権 (プロセスはファイルを Program Files フォルダにインストールし、HKEY_LOCAL_MACHINE などの重要なレジストリ領域に書き込みを実行できます)

    ユーザー特権 (プロセスはユーザーのドキュメント フォルダ内でファイルを作成および変更することができ、HKEY_CURRENT_USER などのユーザー専用のレジストリ領域に書き込みを実行できます)

    信頼性の低い権限 (プロセスは Temporary Internet Files\Low や HKEY_CURRENT_USER\Software\LowRegistry キーなどの整合性が低いロケーションにしか書き込みを実行できません)

    保護モードの理解

    保護モードは、新しい整合性機構に基づいて構築されており、整合性レベルの高いプロセス、ファイル、レジストリ キーといったセキュリティ オブジェクトへの書き込みアクセスは禁止されます。 Internet Explorer は、保護モードで実行される場合、整合性の低いプロセスになります。したがって、ユーザーのプロファイルやシステム ロケーションにあるファイルおよびレジストリ キーへの書き込みアクセス権限を取得できません。

    整合性の低いプロセスは、整合性の低い必須ラベルが割り当てられたフォルダ、ファイル、およびレジストリ キーにしか書き込みを実行できません。 結果として、保護モードで実行される Internet Explorer と拡張機能は、整合性の低い新規の Temporary Internet Files フォルダ、History フォルダ、Cookies フォルダ、Favorites フォルダ、Windows の一時ファイル フォルダなどの整合性の低いロケーションにのみ書き込みを実行できます。

    さらに、Windows Vista の出荷時では、保護モード プロセスはデスクトップの整合性レベルが低い状態で実行されます。これによって、特定のウィンドウ メッセージが整合性の高いプロセスに送信されることを防止しています。

    ユーザーのシステムの重要な領域に無許可でアクセスできないようにすることで、保護モードはセキュリティに問題のある IE プロセスが与える可能性のある損害の規模を軽減します。 たとえば、攻撃者はユーザーのスタートアップ フォルダに対して、キーストロークの記憶プログラムを通知なしにインストールできません。 同様に、セキュリティに問題のあるプロセスがウィンドウ メッセージによって、デスクトップ上でアプリケーションを操作することはできません。

    当然ですが、これらの防御処置は整合性の高いロケーションへの正式な変更処理も制限します。 結果として、保護モードは、次の図で示すように、互換性アーキテクチャによって既存の拡張機能への影響を少なくしています。

    protmode_fig1.gif

    • 整合性レイヤは多数の既存の拡張機能の要求に対処します。 これは、ユーザー プロファイルの My Documents フォルダや HKEY_CURRENT_USER レジストリ ハイブといった中間の整合性のリソースへの書き込みを遮断します。 整合性レイヤは、Windows Compatibility Shim (英語) を使用して、これらの処理を次の整合性の低いロケーションに自動的にリダイレクトします。

      • Documents and Settings\%userprofile%\LocalSettings\TemporaryInternet Files\Virtualized

      • HKEY_CURRENT_USER\Software\Microsoft\InternetExplorer\InternetRegistry

    • 上位にある 2 つの特権ブローカー プロセスによって、Internet Explorer と拡張機能はユーザーの同意を得た上位処理を実行できます。 たとえば、ユーザー特権ブローカー (IEUser.exe) プロセスは、ユーザーが整合性の低い領域以外にファイルを保存できる関数を備えます。 さらに、管理者特権ブローカー (IEInstal.exe) プロセスでは、Internet Explorer は ActiveX コントロールをインストールできます。

    詳細については、「保護モードの操作」を参照してください。

    保護モードの設定

    保護モードは、Internet Explorerの [インターネット オプション] ダイアログで設定することができます。 保護モードを設定するには、Web コンテンツのゾーンを選択し、[レベルのカスタマイズ...] ボタンをクリックして、[保護モード] 設定を変更します。 保護モードは、Windows Vista の出荷時にはグループ ポリシーから設定することができます。

    ユーザーは、ステータス バーの Web コンテンツ ゾーンの横にある [保護モード] を確認することで、Internet Explorer が保護モードであることを確認できます。

    保護モードの操作

    このセクションでは、拡張機能が保護モードで一般的なタスクを実行する方法について説明します。整合性の低いオブジェクトのロケーションを検出する方法、整合性の低いファイル ロケーションにファイルを保存する方法、プロセスを保護モードから昇格させる方法、および保護モードのアクセス障害をデバッグする方法について説明します。

    整合性の低い書き込みロケーションの検出

    Windows Vista では、セキュリティ オブジェクトはこれを作成したプロセスの整合性レベルを自動的に継承します。 結果として、保護モードで作成されるファイルまたはレジストリ キーの整合性レベルは低くなります。 つまり、整合性の低いプロセスが作成するオブジェクトへの書き込みアクセス権は、整合性の低いプロセスが取得できます。 ただし、整合性の低いプロセスは、ユーザーのプロファイルにある中間または高い整合性のフォルダやファイルへの書き込みアクセス権を取得することはできません。

    整合性の低いロケーションに書き込む前に、拡張機能は IEIsProtectedModeProcess (英語) 関数を呼び出して、Internet Explorer が保護モードで実行されているかどうかを判断します。 保護モードであれば、拡張機能はユーザーの UserProfile フォルダの下位フォルダ (通常は %userprofile%\AppData\Local\Low) にファイルを書き込むことができます。 FOLDERID_LocalAppDataLow フラグと SHGetFolderPathEx 関数を使用して、展開されるフォルダ名を取得します。

    Windows Vista の最新のプレリリース バージョンにはサポートされていません。SHGetFolderPathEx は、今後のプレリリースでサポートされる予定です。

    整合性の低いプロセスは、HKEY_CURRENT_USER\Software\LowRegistry などの整合性の低いレジストリのサブキーを作成し、ここに書き込むことができます。 IEGetWriteableHKCU (英語) 関数を使用して、整合性の低いレジストリ ロケーションを取得します。

    セキュリティに関する警告 異なる整合性レベルを混在させように注意してください。 整合性の低いオブジェクトは、整合性が中間または高いオブジェクトから分離して格納することをお勧めします。

    ユーザー プロファイルへのファイルの保存

    ユーザーまたはアプリケーションが後からファイルを検出できるようにするため、ファイルを特定のロケーションに保存する必要がある拡張機能もあります。 次の手順は、整合性の低いロケーション以外にファイルを保存する方法です。

    1. ユーザーの UserProfile フォルダの下位フォルダ (通常は %userprofile%\AppData\Local\Low) に暫定版のファイルを作成します。

    2. ユーザーのプロファイル フォルダのロケーションを使用して IEShowSaveFileDialog (英語) を呼び出し、別のロケーションにファイルを保存することをユーザーに求める画面を表示します。 ユーザーが [名前を付けて保存] ダイアログを確定すると、IEShowSaveFileDialog は選択された保存先フォルダを返します。

    3. 手順 1 で保存した一時ファイルのロケーションを使用して、IESaveFile (英語) を呼び出します。

    これを実行すると、保護モードのユーザー ブローカーは一時的なロケーションからユーザーが選択したロケーションにファイルをコピーします。

    整合性が中間である他のオブジェクトへの書き込みアクセス権を取得するには、カスタム ブローカー プロセスを使用してから、ブローカーを中間レベルのプロセスに昇格させます。 中間レベルのプロセスを実行すると、ブローカー オブジェクトは中間の整合性のオブジェクトにアクセスできます。 詳細については、「ブローカー プロセスの昇格」を参照してください。

    ブローカー プロセスの昇格

    一般的に、拡張機能は可能な限り、整合性の低いプロセスとして処理します。 これにより、悪意ある攻撃からの保護を最大限強化することができます。 ただし、拡張機能は整合性が中間または高いオブジェクトにもアクセスすることが必要な場合もあります。

    この場合、ブローカー プロセスを作成して、整合性の高いオブジェクトにアクセスし、整合性レベルの高いブローカー プロセスを起動します。 既定では、Internet Explorer は、次のスクリーン ショットのようにユーザーにプロセス昇格の確認を求める画面を表示します。

    protmode_fig2.gif

    次の値を持つグローバル一意識別子 (GUID) を作成することによって、ブローカーを登録して、中間の整合性まで通知なしに昇格させることができます。

    1. 実行可能な名前用の A REG_SZ の値

    2. ユーザーが選択する実行可能ファイルのインストール ロケーション用の A REG_SZ の値

    3. 拡張機能が COM サーバーを起動する場合は、拡張機能の CLSID を収めた REG_SZ の値を追加します。

    4. 保護モードがブローカーを起動する方法を示す DWORD の値。 次の表は、サポートされる値とその意味を示します。

      結果

      3

      保護モードは、中間の整合性のプロセスとしてブローカーを通知なしに起動します。

      2

      保護モードは、プロセスを起動する許可をユーザーに求める画面を表示します。 許可が承認されると、プロセスは中間の整合性のプロセスとして起動されます。

      1

      保護モードは、低い整合性のプロセスとしてブローカーを通知なしに起動します。

      0

      保護モードはプロセスの起動を禁止します。

    次に、GUID を以下のレジストリ キーに追加します。

    HKEY_LOCAL_MACHINE

              SOFTWARE

                       Microsoft

                                Internet Explorer

                                         Low Rights

                                                  ElevationPolicy

    Application Compatibility Toolkit によるデバッグ

    保護モードは、Windows XP Service Pack 2と一緒に導入された Microsoft Application Compatibility Toolkit (英語) を使用します。

    Internet Explorer またはその拡張機能が、保護モードでセキュリティ オブジェクトへの書き込みを試行すると、アプリケーションの互換性ログには、その操作と結果を記述したエントリが収められます。 次のリストは、ログ エントリの値を説明したものです。

    • ModuleName は、セキュリティ オブジェクトにアクセスするプロセスを起動したファイル名です。

    • VirtualizationAction は、書き込み処理の結果を示し、次のいずれかの値になります。

      • InterceptedWrite は、処理が互換性レイヤによって遮断されたことを示します。

      • WriteIgnored は、試行プロセスが昇格したブローカーであるため、処理が保護モードによって無視されたことを示します。

      • CreateVirtualCopy は、互換性レイヤが仮想ロケーションにオブジェクトのコピーを作成したことを示します。

      • CreateNew は、互換性レイヤが仮想ロケーションに新しいオブジェクトを作成したことを示します。

    • ObjectType は、File または Registry のいずれかです。

    • APIName は、処理を試行する関数を示します (CreateFile or RegOpenKey など)。

    • ReqObjectPath は、処理オブジェクトが変更しようとしたオブジェクトのロケーションです。 オブジェクトにパスがない場合は、これは空白になります。

    • 書き込み処理が正常に終了した場合、NewObjectPath は、この処理によって変更されたオブジェクトを示します。

    • APIResult は、書き込み処理を試行する API 関数が返した結果を示します。

    • LastError は、API 関数が受け取った最新のエラーです。

    この情報は、予測どおりに処理が実行されない場合に原因を特定するために非常に有効です。

    安全な拡張機能の設計

    保護モード用の安全な Internet Explorer 拡張機能を開発することは、Windows Vista 用に安全なアプリケーションを開発することと、大きな違いはありません。 『最小特権環境のアプリケーションに関する、開発者向けベスト プラクティスおよびガイドライン』 (英語) に提供されるガイドラインに加えて、拡張機能の開発者は、拡張機能からソフトウェアをインストールする方法、整合性の低いプロセスを起動する方法、リソースの整合性レベルを低くする方法、およびプロセスの整合性レベルを特定する方法について理解する必要があります。 このセクションでは、これらのタスクを実行する方法について説明します。

    拡張機能からのソフトウェアのインストール

    保護モードでの実行時には、ActiveX コントロールと他の拡張機能はソフトウェアをインストールできません。 拡張機能が、Program Files や HKEY_LOCAL_MACHINE のレジストリ キーなどの整合性の高いオブジェクトを変更する必要がある場合は、管理者特権を使用して実行できるスタンドアロンのインストール アプリケーションを作成する必要があります。

    管理者特権でアプリケーションを起動するために、アプリケーション マニフェストを含めることができます。これについては、『最小特権環境のアプリケーションに関する、開発者向けベスト   プラクティスおよびガイドライン』に詳述されています。

    整合性の低いプロセスの起動

    既定では、子プロセスは親プロセスの整合性レベルを継承します。 中間の整合性のプロセスから整合性の低いプロセスを起動するには、新しいプロセスを整合性の低いプロセスとして明示的に起動する必要があります。 これは3 つの手順プロセスによって実行できます。

    1. 整合性が中間であるプロセスのハンドルを複製します。

    2. SetTokenInformation (英語) を使用して、プロセス ハンドルの整合性を低くします。

    3. CreateProcessAsUser (英語) を使用して、整合性の低いハンドルを使用する新しいプロセスを作成します。

    次のサンプル コードは、このプロセスを示します。

    #include "winnt.h"
       BOOL                  b;
       HANDLE                hToken;
       HANDLE                hNewToken;
       PWSTR                 szProcessName = "LowClient";     // 例
       PWSTR                 szIntegritySid = "S-1-16-4096";  // 整合性の低い SID
       PSID                  pIntegritySid = NULL;
       TOKEN_MANDATORY_LABEL TIL = {0};
       PROCESS_INFORMATION   ProcInfo = {0};
       STARTUPINFO           StartupInfo = {0};
       ULONG                 ExitCode = 0;
       b = OpenProcessToken(GetCurrentProcess(),MAXIMUM_ALLOWED, &hToken);
       b = DuplicateTokenEx(hToken, MAXIMUM_ALLOWED, NULL, SecurityImpersonation, TokenPrimary, &hNewToken);
       b = ConvertStringSidToSid(szIntegritySid, &pIntegritySid);
       TIL.Label.Attributes = SE_GROUP_INTEGRITY;
       TIL.Label.Sid        = pIntegritySid;
       // プロセスの整合性レベルの設定
       b = SetTokenInformation(hNewToken, TokenIntegrityLevel,
        &TIL, sizeof(TOKEN_MANDATORY_LABEL) + RtlLengthSid(pIntegritySid));
       // プロセスの UI 特権レベルの設定
       b = SetTokenInformation(hNewToken, TokenIntegrityLevelDesktop,
        &TIL, sizeof(TOKEN_MANDATORY_LABEL) + RtlLengthSid(pIntegritySid));
       // 整合性の低い新しいプロセスの作成
       b = CreateProcessAsUser(hNewToken, NULL, szProcessName,
        NULL, NULL, FALSE, 0, NULL, NULL, &StartupInfo, &ProcInfo);

    リソースの整合性の降格

    一般的に、セキュリティに関して、上位レベルのプロセスが整合性の低いプロセスとのリソースの入力や共有を許可することは推奨されていません。 整合性の低いプロセスが悪意のある動作を試行するリスクがあります。 ただし、これは設計によっては必要になる場合があります。

    整合性の低いプロセスからリソースを入力して共有するアプリケーションでは、整合性の低いプロセスが提供するデータが信頼できずに、適切な検証を実行することを想定しておく必要があります。

    整合性の低いアプリケーションは、整合性の低いリソースにしか書き込みを実行できないため、共有リソースの整合性レベルを低くする必要があります。

    1. Low の必須ラベルを定義する SDDL セキュリティ記述子を作成します。

    2. SDDL 文字列をセキュリティ記述子に変換します。

    3. 整合性の低い属性をセキュリティ記述子に割り当てます。

    4. セキュリティ記述子を共有リソースに割り当てます。

    次のサンプル コードは、このプロセスを示します。

    #include <sddl.h>
       // LABEL_SECURITY_INFORMATION SDDL SACLの低整合性用の設定
       #define LOW_INTEGRITY_SDDL_SACL_W       L"S:(ML;;NW;;;LW)"
       BOOL  b = TRUE;
       DWORD dwErr = ERROR_SUCCESS;
       PSECURITY_DESCRIPTOR pSD = NULL;    
       PACL pSacl = NULL;                  // 割り当てなし
       BOOL fSaclPresent = FALSE;
       BOOL fSaclDefaulted = FALSE;
       LPCWSTR pwszFileName = "Sample.txt";
       b = ConvertStringSecurityDescriptorToSecurityDescriptorW(LOW_INTEGRITY_SDDL_SACL_W, SDDL_REVISION_1, &pSD, NULL);
       b = GetSecurityDescriptorSacl(pSD, &fSaclPresent, &pSacl, &fSaclDefaulted);
       // psidOwner、psidGroup、および pDacl はすべて NULL です。
       dwErr = SetNamedSecurityInfoW((LPWSTR) pwszFileName, SE_FILE_OBJECT, LABEL_SECURITY_INFORMATION, NULL, NULL, NULL, pSacl);

    アプリケーション プロセスは、セキュリティ オブジェクトの整合性レベルをアプリケーション プロセスと同等またはそれ以下のレベルにしか設定できません。

    Windows Vista では、所有者がセキュリティ オブジェクトの整合性アクセス レベルを変更できます。 このような変更では、監査ログは更新されません。

    セキュリティ オブジェクトに対して READ_CONTROL 特権を持つプロセスは、GetNamedSecurityInfo (英語) を使用してオブジェクトの整合性レベルを特定できます。

    プロセスの整合性レベルの特定

    さまざまなプロセスで実行できる拡張機能であれば、コードが Low または Medium の整合性レベルのプロセスで実行中であるかどうかを確認し、それに対応して動作を変更することができます。 次の手順は、プロセスの整合性レベルを特定する方法です。

    1. 最新のプロセスのトークンに合わせてハンドルを開きます。

    2. トークンの整合性レベルを取得します。

    3. 整合性レベルの SID をシステムで定義された整合性レベの RID と比較します。

    次のサンプル コードは、この実行方法を示します。

    BOOL                         b                  = TRUE;
       HANDLE                       hToken;
       HANDLE                       hProcess;
       DWORD                        dwLengthNeeded;
       DWORD                        dwError            = ERROR_SUCCESS;
       PTOKEN_MANDATORY_LABEL       pTIL               = NULL;
       LPWSTR                       pStringSid;
       hProcess    = GetCurrentProcess();
       b = OpenProcessToken(hProcess, TOKEN_QUERY | TOKEN_QUERY_SOURCE, &hToken);
       // 整合性レベルの取得
       b = GetTokenInformation(hToken, TokenIntegrityLevel, NULL, 0, &dwLengthNeeded);
       if (!b)
       {
           dwError = GetLastError();
           if (dwError == ERROR_INSUFFICIENT_BUFFER)
           {
               pTIL = LocalAlloc(0, dwLengthNeeded);
               if (pTIL == NULL)
               {
                   b = FALSE;
                   dwError = ERROR_NOT_ENOUGH_MEMORY;
                   goto Cleanup;
               }
               b = GetTokenInformation(hToken, TokenIntegrityLevel, pTIL,
                                       dwLengthNeeded, &dwLengthNeeded);
               if (!b)
               {
                   dwError = GetLastError();
                   goto Cleanup;
               }
           }
       if (pTIL) 
       {
           wprintf(L"Integrity Level:\n");
           b = ConvertSidToStringSid(pTIL-&>Label.Sid, &pStringSid); 
       }

    よく寄せられる質問 (FAQ)

    Q: UAP ファイルとレジストリ Virtualization は保護モードに適用されますか。

    A: 適用されません。UAP Virtualization は、保護モードに適用されないため、重要な領域に書き込む保護モードの拡張機能への書き込みアクセスはリダイレクトされません。

    保護モードでは、システム領域のリダイレクトされたストアまたは仮想ストアへの書き込みアクセス権はありません。 保護モードで実行中の拡張機能が重要なシステム領域に書き込みを試行すると、アクセス拒否エラーが発生します。

    Q: USER PROFILE または HKEY_CURRENT_USER レジストリ ロケーションの中で、保護モードの Internet Explorer の拡張機能が書き込みを実行できない特別なロケーションはありますか。

    A: あります。次の USER PROFILE フォルダまたは HKEY_CURRENT_USER レジストリ ロケーショ内の Internet Explorer 専用のロケーションでは、アクセス拒否エラーが返されます。

    Documents and Settings\%USER PROFILE%...
    ...\Local Settings\Temporary Internet Files 
    ...\Local Settings\Temp 
    ...\Local Settings\History 
    ...\%USER PROFILE%\Favorites 
    ...\%USER PROFILE%\Cookies 
    HKCU\Software\... 
    ...\Classes 
    ...\Microsoft\Windows 
    ...\Microsoft\Internet Explorer

    さらに、次のいずれかのバイナリの API 関数を使用することによって、セキュリティ オブジェクトへの書き込みアクセス権を取得しようとする拡張機能は、アクセス拒否エラーを受け取ります。

    Internet Explorer のバイナリ

    BrowseUI.dll

    IEFrame.dll

    MsHtmlEd.dll

    ShDocVw.dll

    DxtMsft.dll

    InetCpl.dll

    MsTime.dll

    UrlMon.dll

    DxTrans.dll

    MsHtml.dll

    Peers.dll

    WinInet.dll

    その他のバイナリ

    AdvApi.dll

    CorPol.dll

    NtDll.dll

    WinTrust.dll

    ComCtl32.dll

    Crypt32.dll

    SChannel.dll

    ComDlg32.dll

    Kernel32.dll

    Secure32.dll

    Q: ツール バーから昇格した Internet Explorer プロセスを起動することを防止するにはどうすればよいですか。

    A: 多くのツール バー インストールは、Internet Explorer のすべての実行中インスタンスを終了し、セットアップの完了後に新しいインスタンスを起動するため、新しいツール バーが表示されます。 問題は、新しい Internet Explorer が昇格したプロセスから起動されるため、Internet Explorer も昇格してしまうことです。 Internet Explorer を終了して再起動することによって、このツールバーの問題を回避できます。


    Navigation

     保護モードの Internet Explorer の理解と機能
  • 相关阅读:
    只有标题1没有标题2、3的解决方法
    python函数学习总结
    python基础知识学习总结
    StructuredStreaming中,如果trigger触发时前一批数据还没处理完怎么办?
    StructuredStreaming解析JSON CVS
    StructuredStreaming整合kafka
    kafka--如何选择Kafka的分区数和消费者个数
    kafka中groupid作用
    查看kafka版本
    spark项目java与scala相互调用打包
  • 原文地址:https://www.cnblogs.com/si812cn/p/1735513.html
Copyright © 2011-2022 走看看