none
IE7(保護モード) と ActiveX RRS feed

  • 質問

  • お世話になっております。

    IE上で使用するActiveXコントロールを開発しているのですが、

    そのActiveXは、あるサーバからファイルをダウンロードして、任意の場所に保存する機能を実装しているのですが、IE7(保護モードが有効)の場合、ダウンロードされているように見えるのですが、任意のフォルダには、エクスプローラからみると、ファイルがありません。(※ダウンロードして見えるというのは、ダウンロード中にプログレスを表示しているので。)保護モードを解除すると保存できるのですが。。。任意のフォルダには、ダウンロードした時間を名前にしたフォルダを新規に作成して、そこにダウンロードしております。

    エクスプローラから見ると、この新規に作成したフォルダもみつかりません。ただユーザーに任意のフォルダを選択するダイアログ(ActiveX)にはあるのですが。。。

     

    保護モードを解除することでは、正常に動作しているのですが。。。

     

    セキュリティが厳しくなり、保護モードが有効な場合は、一旦特殊なフォルダにダウンロードされることをなにかでよんだことがあるので、調査使用とは思うのですが、ActiveXから作成したフォルダは、ActiveXからしか見えないのはなぜでしょうか。IEを一度再起動しても任意のフォルダに作成したフォルダは見えるのですが、エクスプローラからみるとみつかりません。※任意のフォルダを選択させるダイアログは、SHBrowseForFolderを使用しております。

     

    ご教授ください。

     

    2007年6月29日 6:32

すべての返信

  • セキュリティが厳しくなり、保護モードが有効な場合は、一旦特殊なフォルダにダウンロードされることをなにかでよんだことがあるので

     

    Protected mode に限らず、IE6 ですらそういう実装でしたよ?

     

    セキュリティが厳しくなり、保護モードが有効な場合は、一旦特殊なフォルダにダウンロードされることをなにかでよんだことがあるので、調査使用とは思うのですが、ActiveXから作成したフォルダは、ActiveXからしか見えないのはなぜでしょうか。IEを一度再起動しても任意のフォルダに作成したフォルダは見えるのですが、エクスプローラからみるとみつかりません。※任意のフォルダを選択させるダイアログは、SHBrowseForFolderを使用しております。

     

    IE7 の protected mode で使用されている IL (Integrity Level) low の状態で扱えるのは、対象の SACL に Mandatory Label\Low Mandatory Level が設定されていることが大前提です。"%APPDATA%\LocalLow" にの ACL を調査してみましょう。

     

    Integrity level を ACE として folder へ設定可能

    Low integrity level

     

    では、そもそも protected mode では任意の場所へ download 出来ないんじゃないの?と思うかもしれませんが、その部分は別の IL で動作しています。

     

    Understanding and Working in Protected Mode Internet Explorer

    保護モードの Internet Explorer の理解と機能

     

    で解消方法ですが、上記の document のSaving Files to the User Profile が参考になるでしょう。

     

    2007年6月30日 9:48
  • ご返事ありがとうございました。

     

    IE6も同等の機能が実装されているとは、知りませんでした。

    勉強不足です。

     

    整合性レベル(Integrity Level)と言う概念があることを、参考URLによって

    しることができました。アクセス権ではなく、整合性レベルもあるのですね。

    勉強になりました。

     

    ただ理解できないのが、IE上で動作しているActiveXコントロールから

    表示するフォルダツリーには表示されていて、(SHBrowseForFolderダイアログにて)

    通常のエクスプローラからみると表示されないフォルダって、いったいどのように設定すると

    みえるのか、どうしてもわかりません。

    (※但し、見えないフォルダは、IE上で動作しているActiveXコントロールが生成しました。)

     

    整合性レベルを返ることで、見える方法が有るのでしょうか?

    2007年7月3日 7:30
  • 私も仕事でVistaとIE7の保護モードについてひたすら勉強しました。

    間違っているかもしれませんが・・・・

     

    Vistaには仮想化という機能があります。

    これは簡単に言うと、権限のない領域にファイル作成やファイルへの書き込みなどを行うと

    この書き込みなどを低権限で書き込める領域にリダイレクトする機能です。

     

    WindowフォルダやProgram Filesフォルダのような重要なファイルがあるフォルダは

    高い権限がないと書き込みができません。

     

    Program Filesフォルダへファイルを作成した場合、このファイル作成処理がリダイレクトされ

    C:\Users\[ユーザー名]\AppData\Local\VirtualStore配下に作成されます。

     

    実際この処理をするとエラーにはならないため正常にファイル作成されたかのように思いますが、

    実際には予定された場所にはファイルがないということになります。

     

    IEShowSaveFileDialog関数とIESaveFile関数を利用することでできるようですよww

    保護モードの Internet Explorer の理解と機能に利用方法がかかれてます。

     

    VistaではActiveXはかなり低い権限で動作するようになっており、できることはかなり限られています。

    なのであまりオススメはしませんが、ActiveXを実行するサイトを信頼済みサイトに登録して

    権限を上げるといいと思います。(信頼済みサイトは保護モードがデフォルトで無効です)

     

    2007年7月13日 16:50