Adobe Readerの保護モード
Adobe Readerの保護モードでは何かと面倒なことになっております。
弊社で作成したソフトウェアで、特殊権限下の共有フォルダ内にあるpdfファイルを開こうとすると、次のエラーが発生してファイルが開けません。
「この文章を開くときにエラーが発生しました。アクセスが拒否されました。」
もちろん、pdfファイルが存在しているフォルダは読取/書込権限が付いており、pdf以外のファイルは全て正常に開きます。Adobe Readerのバージョンも保護モードが付いたXでは正常に開きますが、最新のXIで開かなくなったようです。なぜこのようなことになったのか、いろいろ調べましたが全く分かりませんでした。もちろん何かが原因なのでしょうが、考えられる要素が多くて検証不可能でした。
仕方がないので対処療法として調べたところ、[編集]-[環境設定]-[セキュリティ(拡張)]-[起動時に保護モードを有効にする]チェックを外すことで対応可能ということがわかり、実行したところ、確かに開くことができました。しかし、これではネット上にある、あらゆるpdfファイルが無防備に開かれることになりかねないため、コンサルティングをやっている当方としてはお勧めできません。となると、この共有フォルダ以下のpdfについてのみ許可という設定が妥当だと考えられますが、これがまたうまく行きません。同じ、[編集]-[環境設定]-[セキュリティ(拡張)]に「拡張セキュリティ」なる設定項目があり、こちらを使っていろいろ試しましたが、全然ダメでした。恐らく「拡張セキュリティ」と「サンドボックスによる保護」は別物なのでしょう。
ではどうすればよいか。「サンドボックスによる保護」の「保護モードのログファイルを作成」にチェックを入れ、実際にエラーを発生させてからログを見てみると、ヒントがありました。
「次のポリシールールを使用してポリシーの変更を検討してください : FILES_ALLOW_ANY または FILES_ALLOW_DIR_ANY」
この一文をヒントに検索したところ、まぁ情報の少ない事。で、何とか動かすことができましたので書いておきます。
1 次のレジストリを付け加えます。
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Adobe\Acrobat Reader\11.0\FeatureLockDown
名前: bUseWhitelistConfigFile
種類: DWORD
値 : 1
2 Adobe Readerがインストールされている場所(AcroRd32.exeのあるフォルダ)にファイルを追加します。
インストールされている場所はお使いの環境で変わりますのでご注意ください。
32bit OSの場合:
C:\Program Files\Adobe\Reader 11.0\Reader
64bit OSの場合:
C:\Program Files (x86)\Adobe\Reader 11.0\Reader
追加するファイル名:ProtectedModeWhitelistConfig.txt
3 「メモ帳」等で追加したファイルに以下を追加します。
FILES_ALLOW_ANY = \??\UNC\server.domain.local\shere1\*.pdf
例として、サーバ名を「server.domain.local」共有名を「shere1」としております。「\??\unc\」は呪文だと思ってください。ちなみに「\」がバックスラッシュで表示されている方は半角の「¥」に変えてください。後ろの「*.pdf」については、「shere1」の下位のフォルダについても適用されるようです。
ちなみに、ここの記述に2バイトコード(漢字等)は使えないようです。また保存時にUTF-8等にすると正常に読み込みませんので必ずANSIで保存する必要があります。
4 エラーが出ないか確認します。
以上で設定は終わりです。あとはregファイルとbatファイルを作ってレジストリの設定とProtectedModeWhitelistConfig.txtファイルのコピーを自動で一発で行えるようにすれば、個別に対応ができるかと思います。