Navigation Log - なびろぐ -
2009/07/15

...X680x0 spirit inside...

この日記はGNSで生成しています。
この日記の画像はOPTPiX webDesigner Ver.4で生成しています。

hauN
Go amazon.co.jp

■ご注文リストから■ [一覧]
■Amazonギフト券■ [購入]
8BITDO SFC30 GamePad [ゲーム]
8BITDO SFC...
Amazonほしい物リスト


2009/07/15 (水) 曇後晴

MS PhotoEditorの関連付けを外す (PC)

_ 古いMicrosoft Officeをインストールすると、「Microsoft PhotoEditor」なるツールがインストールされる。まあそこそこ使えるものではあるんだが、実は重大な問題がある。

_ これをインストールすると、その後どんな画像処理ツールや画像ビューアを入れても、*.JPGや*.PNGなどの関連付けをMS PhotoEditorから変えることができなくなってしまう。エクスプローラ内の関連付け変更機能からですら、である。

_ これは、Windowsの通常の関連付けルールよりも強い独自ルールで関連付けされてしまうため。詳細はこんな感じ。


[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\JPEGfile\shell\Open\command]
@="\"C:\\Program Files\\Common Files\\Microsoft Shared\\PhotoEd\\PHOTOED.EXE\" \"%1\""
"command"=hex(7):57,00,2d,00,63,00,61,00,56,00,6e,00,2d,00,7d,00,66,00,28,00,\
  59,00,52,00,5d,00,65,00,41,00,52,00,36,00,2e,00,6a,00,69,00,50,00,68,00,6f,\
  00,74,00,6f,00,45,00,64,00,69,00,74,00,6f,00,72,00,46,00,69,00,6c,00,65,00,\
  73,00,3e,00,77,00,77,00,79,00,7a,00,41,00,32,00,50,00,48,00,36,00,3d,00,68,\
  00,3d,00,46,00,40,00,29,00,7e,00,2d,00,41,00,39,00,58,00,20,00,22,00,25,00,\
  31,00,22,00,00,00,00,00

_ これは、レジストリエディタで当該部分をexportしたもの。設定行は「@=」エントリと「"command"=」エントリの2つ。この2つは、OSにより「HKEY_CLASSES_ROOT\JPEGfile\shell\open\command」へリダイレクトされて、関連付けに使用される。つまりこうなるわけだ。


[HKEY_CLASSES_ROOT\JPEGfile\shell\open\command]
@="\"C:\\Program Files\\Common Files\\Microsoft Shared\\PhotoEd\\PHOTOED.EXE\" \"%1\""
"command"=hex(7):57,00,2d,00,63,00,61,00,56,00,6e,00,2d,00,7d,00,66,00,28,00,\
  59,00,52,00,5d,00,65,00,41,00,52,00,36,00,2e,00,6a,00,69,00,50,00,68,00,6f,\
  00,74,00,6f,00,45,00,64,00,69,00,74,00,6f,00,72,00,46,00,69,00,6c,00,65,00,\
  73,00,3e,00,77,00,77,00,79,00,7a,00,41,00,32,00,50,00,48,00,36,00,3d,00,68,\
  00,3d,00,46,00,40,00,29,00,7e,00,2d,00,41,00,39,00,58,00,20,00,22,00,25,00,\
  31,00,22,00,00,00,00,00

_ 「@=」エントリは通常の関連付けルール。対して、「"command"=」エントリはそれよりも上位で、MS PhotoEditorなどごく一部のMS製アプリで使用される関連付けルール。中身はPHOTOED.EXEへのパスのようだが、妙なエンコーディングがなされているため詳細は不明である。

_ (エクスプローラも含め)通常の関連付け変更ツールは「@=」エントリのみを変更する。しかし優先順位が上の「"command"=」エントリがあるため、結果としてルール変更はなされないということになる。

_ 対策は、この「"command"=」エントリも同時に変更されるようにすればいい。しかしここでいくつかの問題が発生する。

  • このエントリは不明な方法でエンコードされている。つまり自分で好きな値に変更する方法がわからない。
  • ならば削除すればいい・・・と削除しても実際は削除されない。このエントリは、実は「"HKEY_LOCAL_MACHINE\SOFTWARE\Classes"エントリのエイリアス」+「"HKEY_CURRENT_USER\Software\Classes"エントリのエイリアス」という構成になっており、削除を行ってもその結果は「"HKEY_CURRENT_USER\Software\Classes"エントリ」に対して行われることになるため、「"HKEY_LOCAL_MACHINE\SOFTWARE\Classes"エントリのエイリアス」としては削除することができない。つまり、削除しても復活してしまう。
  • 削除ができないなら、なんとか無効になる値でも入れられないかといろいろ試してみたがダメ。空白とかヌル文字とか空とか、全部エラー扱いになる。

_ ということで、結局「"HKEY_LOCAL_MACHINE\SOFTWARE\Classes"エントリからばっさり削除してしまう」以外に方法はない、ということになる。ただ、この領域を変更するには管理者権限が必要なため、一般のユーザーやアプリがこの変更を行うのは、かなり敷居の高い行為となる。

_ ということで、以下のシステムレジストリ変更スクリプト。これを展開して、UnassocPhotoEd.regをregeditで読ませることで、画像系の拡張子の上位関連付けからPhotoEd.exeを外すことができる。

_ ただし、外す前の状態は保存しないので、バックアップはお忘れなく。ただし、標準のインストール状態であれば、同梱のAssocPhotoEd_DriveC.regを読ませることで、「C:\Program Files\Common Files\Microsoft Shared\PhotoEd\PHOTOED.EXE」であるとして再度関連付けをさせることはできる。

_ 最後に。システムレジストリの変更は■■OSを破壊する■■危険性があることを熟知してから行うように。


[Trackback/Comment]
2009/07/16 19:24:39 エンコーディング自体は単なるリトルエンディアンのUCS2に見えるのでとりたてて変ではないのだけど、ストアのされ方が変ですな (AoiMoe)
2009/07/16 19:31:59 って、UCS2で見ても意味不明な文字列なのか (AoiMoe)




メールはこちらへ...[後藤浩昭 / Hiroaki GOTO / GORRY / gorry@hauN.org]

「表紙へ戻る」
「会議室」 「最新版」 「なびろぐindex」 「GNSソースを読む」