RIAトピックス
リッチクライアント/RIAを主テーマに取り扱います。Flex、Ajax、AIR、Silverlight、JavaFX、etc。
スポンサーサイト
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

VistaのIE7だと2134エラーでSharedObjectが使えない!?
昨日こんなことを書きましたが、
どうやらやっと原因が判明したっぽいです。


(※ 本エントリーは6/24に追記しました。)




先日、仕事で正式にリリースしたばかりのFlexのシステムが
直後に突然Windows Vistaで謎のシステムエラーを頻発。

 ① Flexアプリを起動
 ② システムにログインする
 ③ 起動したFlexアプリのブラウザをいったん隠す
    (ex:別のアプリをアクティブ表示にする)
 ④ 再びFlexアプリをアクティブ表示にする
 ⑤ システムエラー ...orz

で、このシステムエラーの内容をログで確認すると
Flash Playerが「Error #2134」というエラーコードを
吐いていることが判明しました。

これをランタイムエラー一覧で確認すると
「SharedObject を作成できません。」を意味するそうです。


FlexのSharedObjectは、
Flashが持つローカルPCの記憶領域を操作する為のクラスです。

Flash PlayerがインストールされたPCでは
拡張子「.sol」のファイルが作成されて
そこにCookieのように情報を書き込んだり
読み込んだりすることが可能になります。

WindowsXPだと、
> C:\Documents and Settings\USER名\Application Data\Macromedia\Flash Player\#SharedObjects
に大体見つけることが可能です。
SharedObjectはこの情報をいじる為のクラス。

どうもこれがうまく操作できてない模様ですが、
SharedObjectは元々ユーザー設定で
自由に保存するか否かを決められるので
今回のシステムエラーの原因としては十分考えられます。


この設定は、Flash画面上で右クリックし
1. コンテキストメニューから「設定」を選ぶと
2. SharedObject設定を変えることができます。
(リンク先にスクリーンショット有)

もしくはAdobeのこちらのページでも可能。


ところが、実際に障害の発生するPCを見てみると
VistaのPCは触るのが初めてだったこともあって
「.sol」ファイルを見つけることは出来なかったのですが、
設定を確認する限り、
どうもSharedObject自体は保存できている様子。

…なんじゃそりゃ? SharedObjectは関係ない?


次に疑ったのはFlash Playerのバージョンによって
Vistaに対応してない障害があるかもしれないこと。
障害の発生したVistaには
v9.0.r028という、比較的古いFlash Playerが入っていました。

Flash Playerのリリースノートを確認すると
Vista対応が始まったのが、このv9.0.r028からでした。
そして、v9.0.r115のリリース時に
VistaのIE7に関する修正が入っていることが判明しました。

> Windows Vista では、Flash Player 9(9.0.45.0)ActiveX
> コントロールのインストール後にFlashコンテンツを表示しよう
> とすると、Internet Explorer7の保護モードによってセキュリティ
> 警告が表示されることがあります。
> (後略)

 ― Flash Player9 リリースノート より引用


微妙に言っていることが違う気もするけど、
試してみる価値は十分ありそうです。

で、早速問題のPCのFlash Playerを
最新のものに入れ替えたんですが、やっぱり動かない…。

古いFlash Playerが原因でもないのか…。


他にも色々と試してみたのですが、どれもこれも効果無し。
打つ手がなくなったところで、
ちゃんと動作しているXPのIE7をボーっと見ていると
どうもVistaにはあるのにXPには無い設定項目が…。

VistaのIE7は、メニューバーから
[ツール] → [インターネットオプション] → [セキュリティ]
と選ぶと、
保護モードを有効にする
というチェックボックスがありました。
この項目のチェックを外すと
「このままだとセキュリティ的に問題がありますよ」
的なIEからのアラートが山ほど表示されましたが、
一切無視して動作確認をすると、コレがなんと無事正常動作!!



あとからググってみたところ、
このIE7の保護モードは、Vistaにしかない機能で
同じIE7であってもXPには無い設定項目なんだそうです。
保護モードに関する詳しい資料はこちら


まだ十分検証できてないので
自信を持って断言できる訳では無いですが、
どうもこの保護モードが有効になっている状態で
SharedObjectを使用するとFlash Playerから#2134エラーが
吐かれる様子。

たぶんFlash Playerのバグなんじゃないかと思います。


おそらく今週中に検証用のミニアプリを作って
この辺を試してみると思うので、
真実はその時までのお楽しみ、ということで。



ヨウイチ



※ 5/16追記
簡易アプリを作成して確認してみたんですが、
どうもSharedObjectのI/Oだけでは現象を再現できなかったので
他にも原因がありそうです。
操作②のログインにはSharedObjectではなく
Cookieも利用しているので、その辺も関係あるのかも。

※ 6/24追記
やっとこさ解決しました。詳細はこちらからどうぞ。

スポンサーサイト

テーマ:プログラミング - ジャンル:コンピュータ

コメント
この記事へのコメント
コメントを投稿する
URL:
Comment:
Pass:
秘密: 管理者にだけ表示を許可する
 
トラックバック
この記事のトラックバックURL
この記事へのトラックバック
copyright © 2005 RIAトピックス all rights reserved.
Powered by FC2ブログ.
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。