Hebikuzure's Tech Memo

2010年4月29日

IE8 で Office Web コンポーネントに入力した文字が突然消える

Filed under: Windows トラブル — hebikuzure @ 10:10 AM

Entered characters are unexpectedly deleted in a Web page that loads Office Web Components in Internet Explorer 8
http://support.microsoft.com/kb/978454/en-us


Office Web コンポーネント (OWC) は Microsoft Office の機能の一部を実現する ActiveX コントロールで、グラフ、ピボットテーブル、スプレッドシートを Internet Explorer で表示した Web ページ中で表示 / 編集できる。Excel で作成 / 管理しているデータを簡単に Web で取り扱う事ができるので、イントラネットなどで割とよく使われているテクノロジーだ。

便利な OWC だが Microsoft ではこのテクノロジーを廃止する予定となっており、今後セキュリティ修正以外の新しいバージョンの OWC が提供される事は無い。Excel データを Web で扱う場合は、WebDAV や SharePoint などを使ってサーバー上の Excel データをクライアントの Excel で直接開けるようにするか、または Excel Services を使ってサーバー サイドで処理を行うか、いずれかが推奨されている。

この OWC の ActiveX で表示されているページを Internet Explorer 8 で表示してスプレッドシートなどに文字を入力していると、突然入力中の文字が消えてしまうという問題について、上記のサポート技術情報が公開されている。
問題の原因は IE8 に搭載された自動クラッシュ回復機能でエラーが発生するためで、5 秒ごとに文字カーソルのフォーカスがリセットされてしまい、そのタイミングで入力中の文字も消えてしまう。そのためこの機能を無効にすれば現象は回避できる (既定では有効)。自動クラッシュ回復機能を無効にするには、[インターネット オプション] の [詳細設定] タブの [ブラウズ] セクションにある [自動クラッシュ回復機能を有効にする] のチェックをオフにして [OK] をクリックし、Internet Explorer を再起動すれば良い。

また原因となるエラーの発生を改修した修正プログラムも用意されているので、これを適用する事で自動クラッシュ回復機能を有効にしたまま問題を回避できる。修正プログラムはサポート技術情報の上部にある “View and request hotfix downloads” をクリックしてリクエストできる。

広告

2010年4月26日

HDMI 接続の外部ディスプレイで DVD を再生した後、内蔵モニターで表示できなくなる

Filed under: Windows トラブル — hebikuzure @ 4:48 AM

A laptop display does not switch back to the internal monitor after you play a DVD on an external monitor and you disconnect the HDMI cable
http://support.microsoft.com/kb/981721/en-us


装備するテレビやプロジェクターが増えているので、HDMI を使って外部ディスプレイとノート PC と接続する事も少なくないだろう。
そうした際に、特定のシナリオで外部ディスプレイを切り離した後内蔵ディスプレイに何も映らなくなってしまうトラブルが発生する場合がある事が技術情報として公開されている

この問題が発生するのは以下の状況の場合だ。

  1. ノート PC で Windows 7 または Windows Server 2008 R2 を実行している
  2. HDMI ケーブルを使って液晶テレビなどの外部ディスプレイと接続する
  3. ディスプレイ モードを ”プロジェクターのみ” にする (内蔵ディスプレイを無効にする)
  4. コピー保護された DVD を Windows Media Player や Windows Media Center で再生する
  5. HDMI ケーブルを外す

この手順であれば本来なら HDMI ケーブルを外したタイミングで内蔵ディスプレイが有効になるはずだが、実際には有効にならず、デスクトップ画面が表示されないため操作ができなくなってしまう。(外部ディスプレイに HDMI 接続しなおすと、そちらには表示できる)

一時的な回避策としては、外部ディスプレイに HDMI 接続しなおす、リモートデスクトップなどでログオンして操作する、などが考えられるが、修正プログラムが提供されているのでこれをインストールしておけばこの問題は発生しなくなる。
修正プログラムはサポート技術情報の上部 “View and request hotfix downloads” をクリックしてリクエストすれば良い。

2010年4月22日

Windows 7 で iPhone が同期できない問題

Filed under: Windows トラブル — hebikuzure @ 4:27 AM

iPhone and Windows Phone USB sync problems with newer PCs using Intel P55 Chipset
http://support.microsoft.com/kb/2020763


Windows 7 環境で iPhone の同期が行えないトラブルが昨年から 報告されていたが、同じ問題が Windows モバイル デバイス センター (WMDC) と Windows Phone の接続でも発生する事が確認されたらしく、上記のサポート技術情報が公開されている。
どちらも原因は同じで、Intel P55 チップセットを搭載したマザーボードに問題があるとの事。

現時点での明確な回避策は確認されておらず

  • BIOS のアップグレード (ベンダーから問題対策済みの BIOS が提供されている場合)
  • BIOS アップグレードが提供されていない場合は、BIOS 設定を変更する (“C State” を有効にする事で回避した事例があるとの事)

の二つが技術情報には掲載されている。その他 XP Mode から USB を使う事で回避したという例も報告されている

iPhone だけでなく Windows Phone でも影響する問題である事が確認されたので、Microsoft でもより詳しい原因の解明と対策が進められると考えられるので、影響を受けている人は定期的にこの技術情報が更新されていないか確認すると良いだろう。

2010年4月20日

MSConfig で無効にしたスタートアップが復元できない場合がある

Filed under: Windows トラブル — hebikuzure @ 8:14 AM

Startup application may not run after disabled and re-enabled in MSConfig
http://support.microsoft.com/kb/982591/en-us


Windows OS のトラブルシュートで活躍するツールの一つに MSConfig (システム構成) がある。このツールを使えば Windows の起動時に読み込まれるサービスやスタートアップ プログラムについて個別に有効/無効を切り替えることができるので、サードパーティーのサービスやスタートアップ プログラムが原因で発生するトラブルの原因確認に非常に役立つ。

参考情報
Windows Vista または Windows 7 でクリーン ブートを実行して問題のトラブルシューティングを行う方法
http://support.microsoft.com/kb/929135/ja

ところがこの MSConfig でいったん無効にしたスタートアップ項目を有効に戻しても、そのプログラムが起動時に読み込まれず起動しなくなる場合がある。このサポート技術情報ではそうした現象について解説している。

この現象はスタートアップ プログラムとしてレジストリに登録されている実行ファイルの起動パスが展開可能文字列 (REG_EXPAND_SZ) 値として書き込まれており、また起動パスに %SysytemRoot% や %ProgramFiles% などの環境変数が含まれている場合に発生する。
MSConfig ではユーザー インターフェイスで無効にされた (チェックを外された) スタートアップ プログラムが登録されているレジストリ値を記憶した上で削除し、有効に戻された場合はレジストリ値を復元しているのだが、この時に展開可能文字列 (REG_EXPAND_SZ) 値がただの文字列 (REG_SZ) 値として復元されてしまうために問題が発生する。展開可能文字列 (REG_EXPAND_SZ) 値であれば環境変数は展開されてプログラムが実行されるのだが、文字列 (REG_SZ) 値では環境変数の部分が展開されないでプログラムの起動パスとして使用されるので、当然そのプログラムは起動できない。

例えば以下のようなレジストリ値で登録されている
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
名前: notepad
データ: %SysytemRoot%\system32\notepad.exe
種類: REG_EXPAND_SZ
スタートアップ項目があれば、起動時には環境変数が展開されて (既定の環境であれば) “C:\Windows\system32\notepad.exe” が起動される。
この項目を MSConfig で無効にして、もう一度有効にすると、以下のようにレジストリが復元される
名前: notepad
データ: %SysytemRoot%\system32\notepad.exe
種類: REG_SZ
この状態では、起動時には環境変数が展開されない “%SysytemRoot%\system32\notepad.exe” を起動しようとするので、当然そんなパスはないから起動できない。

この問題は製品の問題 (バグ) と技術情報に書かれているが、修正プログラムは存在していない。また Windows XP 以降の現在サポートされているすべてのバージョンの Windows にこのバグが存在する。
技術情報では以下のような回避策が示されている。

  1. MSConfig を使う前に、展開可能文字列 (REG_EXPAND_SZ) 値でパスが登録されていないか確認する (その場合は MSConfig で無効にしない)
  2. 現象が発生してしまったら、レジストリ エディタでスタートアップ項目を手動で復元する

いずれにせよあまり感心できない対処方法であり、色々なトラブルシュートに MSConfig が幅広く使われる事を考えると、修正プログラムの提供が望まれる。
またスタートアップに登録するようなプログラムのインストーラでは、環境変数を使った展開可能文字列 (REG_EXPAND_SZ) 値ではなく、絶対パスを使い文字列 (REG_SZ) 値としてレジストリに登録するように注意が必要だろう。

2010年4月2日

標準ユーザーでログオンすると RunOnce / RunOnceEX キーのコマンドが実行されない

Filed under: Windows Info — hebikuzure @ 8:10 AM

Standard user: RunOnce and RunOnceEx are not being executed
http://support.microsoft.com/kb/2021405

Windows には起動時に自動実行するプログラムを制御するためのレジストリ キーが用意されている。このキーについては以下のサポート技術情報で解説されている。

レジストリの RunOnce キーの定義
http://support.microsoft.com/kb/137367

このうち RunOnce と RunOnceEx は次回ログオン時に 1 回だけ実行されるよう設定するキーで、キーの値として設定されているコマンドの実行前に削除される動作になっている (この動作については この記事この技術情報に詳しい)。

さて Windows Vista / Windows 7 ではレジストリ アクセス権の仕様変更により、以下のように HKEY_LOCAL_MACHINE 配下に記述された RunOnce と RunOnceEx の設定は、標準ユーザー (Users グループのユーザー) でログオンすると実行されない。サポート技術情報 2021405 はこの現象について解説している。

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx

実際に以下の手順で検証してみた。

  1. Windows 7 に管理者ユーザーとしてログオン
  2. 以下のスクリプト (VBS) ファイルを作成
     Wscript.Echo “Done!”
  3. レジストリに以下を設定
    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce]
    “TEST”=”C:\Users\Public\Documents\TEST.vbs”
  4. ログオフし、標準ユーザーとしてログオン ⇒ スクリプトは実行されない。RunOnce キーの値は削除されない
  5. ログオフし、管理者ユーザーとしてログオン ⇒ スクリプトが実行される。RunOnce キーの値は削除される

なお HKEY_CURRENT_USER 配下に記述した RunOnce と RunOnceEx は実行されるし、HKEY_LOCAL_MACHINE 配下でも Run キーの設定はユーザーの権限にかかわらず実行される。 おそらくコマンドの実行前に値を削除する動作で標準ユーザーには削除する権限が無いため失敗し、その時点でエラーになってコマンドの実行自体も行われないと推測される。

RunOnce や RunOnceEx キーはソフトウェアのインストールなどで再起動やログオフ/再ログオンが必要になる場合に初期設定を走らせるのに使われることがあるキーだが、その場合は再起動/再ログオン後に管理者権限の無いユーザーでログオンすると必要な初期設定が行われない事になってしまう。そのため Windows Vista / Windows 7 に対応したインストーラの動作を作りこむ場合には十分な注意が必要だろう。

参考資料

WordPress.com で無料サイトやブログを作成.

%d人のブロガーが「いいね」をつけました。