home ホーム search 検索 -  login ログイン  | help ヘルプ

find 検索

1291 - 1297 / 1297    [|<]  [|<]  [<]  121  122  123  124  125  126  127  128  129  130 
タイトル/名前 更新者 更新日
レジストリの直接編集によるファイルの拡張子と関連づけ msakamoto-sf 2008-11-27 23:51:11
サイバー日野/2002/03/07/15/PHPでのメール送信時エンコーディング msakamoto-sf 2008-11-27 08:26:08
日記/2008/11/25/YakiBikiのWebサイト msakamoto-sf 2008-11-25 01:35:48
日記/2008/11/24/松井冬子いいなぁ msakamoto-sf 2008-11-24 11:13:42
TODO msakamoto-sf 2008-11-24 00:20:59
日記/2008/11/24/移設開始、あとYakiBikiのBracketリンクでバグ。 msakamoto-sf 2008-11-24 00:17:00
SandBox msakamoto-sf 2008-11-23 18:31:05
ソート項目 / ソート順     1ページ 件ずつ表示

レジストリの直接編集によるファイルの拡張子と関連づけ  

所有者: msakamoto-sf    作成日: 2004-09-03 00:00:00
カテゴリ: Windows 

はじめに

このドキュメントは、Windows2000以上の環境で、レジストリを直接編集することによりファイルの拡張子とその関連づけの設定を行うための指南書として作成したものです。
通常、ユーザーレベルでファイルの関連づけを設定するには以下の方法が提供されています。

  • エクスプローラの「ツール」→「フォルダオプション」
  • ファイルを右クリックして表示されるコンテキストメニューの「プログラムから開く」
  • ログインユーザーのホームディレクトリ(Documents and Settings\(USER))の「SendTo」へのショートカットの追加

しかし、トラブルが起こった場合上記の設定を弄くるだけでは解決しない場合も多々あります。(往々にしてそういうトラブルの解決策はネット上にすら存在しません。)そういった場合、最終手段としてレジストリを直接編集し、拡張子とその関連づけを設定し直す必要があります。

このドキュメントは、そのような局面において「広大なレジストリのどこを編集すれば良いのか?」を解説するものです。

なお、このドキュメントは 無保証であり、無保障です。このドキュメントを参考にした操作により発生したいかなる現象も、操作を行った者の自己責任となります。ありきたりですが予防線でした。

注意

このドキュメントを読む対象としては、レジストリエディタを起動し、操作できる人間を仮定しています。「レジストリエディタって何?」とか、「キーの追加ってどうやるの?」という方は、まずは「regedit.exe」などで検索し、使い方を覚えてからこのドキュメントを利用してください。(残念ですがそこまで手が回らないッス・・・)

編集対象のレジストリ群

ファイルの拡張子とその関連づけを保っているレジストリとそのキーを以下に示します。

HKEY_LOCAL_MACHINE(HKLM)\SOFTWARE\Classes
拡張子と、「ProgID」とも呼ばれる「アプリケーション識別子」が登録されています。
HKEY_LOCAL_MACHIN(HKLM)\SOFTWARE\Classes\Applications
上のサブキーとなりますが、重要です。なぜなら「プログラムから開く」に一覧表示されるアプリケーション群の設定が格納されるからです。
HKEY_USERS(HKU)\(ユーザー識別子)\Software\Classes\Applications
「プログラムから開く」の「参照」で手動選択した実行ファイルの設定が格納されます。
いわば、HKEY_LOCAL_MACHIN\SOFTWARE\Classes\Applications のユーザー別の設定です。
(HKEY_USERS\(ユーザー識別子)_Classes)
HKEY_USERS\(ユーザー識別子)\Software\Classes へのシュートカットです。

このように、実際に操作するレジストリの範囲は案外と狭かったりします。しかし、今までレジストリをさわったり弄ったことのある人なら次の疑問が生じるかもしれません。

「HKEY_CLASSES_ROOT(HKCR)キーは操作しないのですか?」

これに対する答えとしては、

「HKCRはHKLM\SOFTWARE\Classes + HKU\(ユーザー識別子)\Software\Classes\Applications である」

つまり、HKEY_CLASS_ROOTはエイリアス(別名)であり、あくまでも「現在ログイン中のユーザー設定の確認用」として使用すべきなのです。実際に編集すると分かりますが、HKLM\Software\Classes や HKU\...\Software\Classes\Applications に対して行った変更は直ちに HKCR 以下にも反映されます。

本ドキュメントでは、「HKCRの実体は別にある」ことを明確にするため、あえてHKCRではなくその元となるHKLMやHKUを操作することにします。

ファイルの拡張子とその関連づけを設定するには

操作1:アプリケーションのProgIDを登録する。

最初に行うのは、HKLM\Software\Classes 以下に「ProgID」と呼ばれる形でアプリケーションを登録することです。
結論から先に言ってしまうと、Windowsのエクスプローラ(と言うよりは"シェル")は、ファイルがダブルクリックされると以下の順でたどっていきます。

拡張子 → 拡張子に設定された ProgID → ProgID に設定された実行ファイル本体

従って、とにもかくにも "ProgID" を登録しないと始まらないわけです。

  1. "ProgID"となるキーを HKLM\SOFTWARE\Classes 以下に登録します。このキー名は実行ファイル名とは関係なく、アプリケーションが扱うドキュメントの説明文字列みたくします。今回は「hoge.exe」というアプリを想定し、「Hoge.Document」という名前でキーを登録します。
  2. 「Hoge.Document」以下に「shell」キーを追加します。
  3. その中に「open」キーを追加します。
  4. さらにその中に「command」キーを追加します。
  5. 「command」キーの「(既定)」エントリを編集し、hoge.exe へのフルパスと、ファイル名の指示方法を設定します。ダブルクリックされたファイル名は "%1" という変数で取得できますので、たとえば次のようになります。
C:\Program Files\Hoge\hoge.exe "%1"

この時点までを自動登録するファイル「hoge1.reg」の内容を示します。

  • hoge1.reg
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Hoge.Document]
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Hoge.Document\shell]
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Hoge.Document\shell\open]
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Hoge.Document\shell\open\command]
@="\"C:\\Program Files\\Hoge\\hoge.exe\" \"%1\""

操作2:拡張子を登録し、関連づけを行う。

続いて拡張子を登録します。今回は「.hoge」という新たな拡張子を設定してみます。

  1. HKLM\Software\Classes 以下に「.hoge」というキーを追加します。
  2. 「(既定)」エントリを編集し、先ほど追加した「Hoge.Document」というProgIDに設定します。これにより、「.hoge」という拡張子をダブルクリックすると「hoge.exe」が起動するようになります。今回の操作を自動登録するファイル「hoge2.reg」の内容を示します。
  • hoge2.reg
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.hoge]
@="Hoge.Document"

・・・実は、たったこれだけで拡張子の関連づけができてしまいます。後の細かい設定は、エクスプローラの「ツール」→「フォルダオプション」→「ファイルの種類」で行う方が良いと思います。アイコンとかの設定は、そちらから行った方が断然楽だと思います。

新しい拡張子のファイルをダブルクリックしたとき、何が起こるか?

まだシステムに登録していない拡張子のファイルをダブルクリックすると、開くアプリケーションを選択する画面が表示されます。そこで自分でアプリを選択すれば、自動的にその拡張子の関連づけを行ってくれます。この裏側では何が行われているのでしょうか?

結論から言うと、「拡張子_auto_file」という ProgID を自動的に生成しています。

上の例で言うなら、自動的に以下のエントリを設定してくれるわけです。

  • hoge_auto.reg
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.hoge]
@="hoge_auto_file"

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\hoge_auto_file]
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\hoge_auto_file\shell]
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\hoge_auto_file\shell\open]
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\hoge_auto_file\shell\open\command]
@="\"C:\\Program Files\\Hoge\\hoge.exe\" \"%1\""

「プログラムから開く」のからくり(Inside for "Open With..." dialog box.)

著者がこのドキュメントを公開する直接の動機は、「プログラムから開く」でプログラムを参照できないというトラブルに見舞われた経験から来ています。(原因そのものは非常に単純なものでしたが・・・)

しかし、トラブルに見舞われずとも「プログラムから開く」で表示されるプログラムの一覧はどこから来ているのか、不思議に思われている方も多いのではないでしょうか?さらに不思議なのは、一度でも「参照」で自分で設定したプログラムは、自動的に一覧に登録してくれる点です。

ここではそのからくりについてみていきます。からくり・・・と言っても、その原理は驚くほど単純です。

"NoOpenWith"エントリ

(Excluding your applications from "Open With..." dialog box list.)

結論から言うと、「プログラムから開く」(英語だと「Open With...」)に表示されるプログラムの一覧は、次のレジストリキー以下にあります。

HKEY_LOCAL_MACHIN\\SOFTWARE\Classes\Applications

ユーザーが「参照」で自分で指定したプログラムの一覧は、次のレジストリキー以下に保存されます。

HKEY_USERS\(ユーザー識別子)\Software\Classes\Applications

では、今回の例に従い実際に「hoge.exe」を追加してみます。ユーザー別ではなく、HKLMの方を利用してみましょう。結論から提示します。以下の自動登録ファイルのようになります。

  • hoge_openwith.reg
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Applications\hoge.exe]
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Applications\hoge.exe\shell]
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Applications\hoge.exe\shell\open]
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Applications\hoge.exe\shell\open\command]
@="\"C:\\Program Files\\Hoge\\hoge.exe\" \"%1\""

"ProgID"の登録の時と似ています。ユーザーが自分で「参照」で選択した場合、 HKU\...\Classes\Applications 以下にこれと同様のキーとエントリが追加されます。

しかし、実際には HKLM\Software\Classes\Applications には一覧で表示されるよりも遙かに多数の .exe が登録されています。それらはなぜ表示されないのか?結論から言うと、「NoOpenWith」エントリが存在するからです。
NoOpenWith エントリ自体は中身が空の文字列ですが、これが設定されているキーは「プログラムから開く」の一覧には表示されません。

「プログラムから開く」の履歴

(How to delete history from "Open With..." sub menu)

これはインターネット上でも広く知られているTipsです。

HKEY_USERS\...\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts

上記中に、これまでユーザーが開いてきた拡張子の一覧がキーとして登録されています。さらにその中の "OpenWithList" 中に、a から始まるエントリが存在します。それがこれまでそのファイルを開いてきたプログラムの履歴となります。

履歴を削除するには、好みのエントリを削除すれば良いわけです。

トラブルシューティング(Trouble Shooting)

著者自身が遭遇したトラブルは、"「プログラムから開く」でプログラムを参照できない」"という珍妙な現象でした。原因は単純で、C:\Program Files 以下にインストールしたフリーソフトのエディタを、丸ごとマイドキュメント以下に移動したことが原因でした。

詳しく説明すると、C:\Program Files 以下にインストールした時点で、一度「プログラムから開く」で参照できました。「プログラムから開く」の一覧にも表示されていました。この時点で、HKU\...\Software\Classes\Applications 以下にそのエディタのキーが登録されます。(利用したエディタは、インストーラなど無く、圧縮ファイルで展開されたフォルダ中のexeを実行すればそれで済むタイプでした。)

いけなかったのはその後で、エディタの入っているフォルダをマイドキュメント以下に移動してしまったのです。

これにより、「プログラムから開く」一覧を生成する際に「参照先が存在しない」として表示されません。さらにまずいのは、エントリ自体はすでに存在するため、「参照」で移動先のプログラムを指定しても修正されず、結局、プログラムを参照できない状態に陥ったわけです。(試しに適当なフリーのエディタをDLし、実験してみてください。フォルダ名を変更するだけで発現します)

この場合の解決策としては、HKLM\Software\Classes\Applications または HKU\...\Software\Classes\Applications 中の該当プログラムのエントリを一度削除します。その後、改めて「プログラムから開く」で移動先のプログラムを参照すれば、新規エントリとして正常に追加されます。

参考URL

2008年11月時点での参考URLです。

記事作成当時は下記URLを参考にしたのですが、サイト構成などが変更されたようで、現在全てLOSTしています。


プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2008-11-27 23:51:11
md5:1cf0d06af1d6a77387558de4f41428f1
sha1:7ff71928ab0662b51fb18eb9c17bd72b972a049d

サイバー日野/2002/03/07/15/PHPでのメール送信時エンコーディング  

所有者: msakamoto-sf    作成日: 2002-03-07 15:45:29
カテゴリ: PHP サイバー日野 

二、三日前にPHP掲示板でメール送信時に文字化けしてしまう部分を修正したことがある。その時に散々EUCSJIS変換で悩まされたのだが、この際そのときの「コツ」を書き付けとく。

結論から言うと、例えばSubject ヘッダーに対するEUC->SJIS変換は、

$subject = i18n_convert($subject,'JIS','EUC');
$subject = tree::mime_enc($subject);

こんなカンジで済ますことができる。

tree::mime_encの中身は

function mime_enc($str){
    if(get_magic_quotes_gpc()) $str = stripslashes($str);
    $encode = "=?ISO-2022-JP?B?" . base64_encode($str) . "?=";    //Bヘッダ+エンコード 
    return $encode; 
}

とまあこんなカンジ。ようするに、
''先にEUC->JIS変換をかませた後、改めてbase64_encodeとか言うのをすれば、インターネットで標準的なエンコーディングができる''ということらしい。
じっさい、この順番で行うようになってから文字化けがぴたりと収まった。

これ・・・会員管理用のdo_mail.incとかにも適用したほうがいいかなあ・・・。


プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2008-11-27 08:26:08
md5:b71bd5c0f37ece55fc337b6d1a33cf08
sha1:365177b4d104b557ee548c7e9e426373dc5f4680

日記/2008/11/25/YakiBikiのWebサイト  

所有者: msakamoto-sf    作成日: 2008-11-25 01:30:13
カテゴリ: YakiBiki 

SF.netのwebスペース間借りできるので作ろうと思ったんですが。
SF.netのwebスペースってかなり制限がきつかったりするので、構築するのが手間。SSHでターミナルログインできないようなので、WinSCPなど経由でしかファイルを弄れないとか。

あと、利用者がそんな居るわけでもないのに専用サイト用意してもなー。という感じです。一応yakibiki.netとかyakibiki.orgのドメインは押さえてはいるけれど。
現実問題としてまだ専用サイトが無い事が原因で困った事が起きているわけでもないので、当面は個人ベースでのんびりと進めた方が良いんじゃないかなと。

専用サイトが云々とか、英語サイトも作りたいなーとかは、とどのつまりは見栄っ張りなだけなので。

という風に自分を納得させておく。


プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2008-11-25 01:35:48
md5:b1b3ba1292d510ee227e789529176f72
sha1:86f3ea1009c2efb03f7a0d0c8f80a7801efb1431

日記/2008/11/24/松井冬子いいなぁ  

所有者: msakamoto-sf    作成日: 2008-11-24 11:06:18
カテゴリ:

先日用事で出掛けて、書店に立ち寄った折に目の端に止まったのが

・「松井冬子 一(普及版)」
http://www.editions-treville.net/?pid=6114761

誰だろうと思って調べてみたら、何か結構有名人だったんですね。
ホームページもありました。

http://matsuifuyuko.com/index.html

画集、買おうかな・・・ボーナス入ったら。


プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2008-11-24 11:13:42
md5:885f903549ca7c18af746aa2ca0b7139
sha1:248c5fd7d2307b2f0cba4f3801d11939584bc2c7

TODO  

所有者: msakamoto-sf    作成日: 2008-11-24 00:20:35
カテゴリ: TODO 
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2008-11-24 00:20:59
md5:805349c15548d836759649206dc51397
sha1:55ffea7b8099a8fc2a8cbaf112e5024fde7b85b5

日記/2008/11/24/移設開始、あとYakiBikiのBracketリンクでバグ。  

所有者: msakamoto-sf    作成日: 2008-11-24 00:13:46
カテゴリ:

Glamenv-Septzenへの移設を開始。

とりあえず、Nifty時代のコンテンツを移設した。
で、早速YakiBikiのBracketリンクのバグ発覚。

[[Alias > yb://hoge/ ]]

みたく末尾が"/"で終わる場合、

<yb_link yb://hoge/>Alias</yb_link>

という形になる為、 "/>" でyb_link HTMLプラグインの終端と認識されてしまうと言う罠。
・・・これ・・・うーん・・・yb_linkというかHTMLプラグインの限界だなぁ。

パラメータとかtrim()して渡しちゃってるし・・・。Bracket側で、">"の前に1つ半角空白入れるとかすれば良いかな。


プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2008-11-24 00:17:00
md5:743cb11988f46fd9fc1fa5b35a93269a
sha1:cda8c5742a7b153db80225d3b3c55cf2423eb4c2

SandBox  

所有者: msakamoto-sf    作成日: 2008-11-23 18:22:11
カテゴリ:

Wiki書式のサンプル集


Inline Formats

external site link : [http://www.google.com]

external site link : [http://www.google.com]

mail link : [mail@example.com]

mail link : [mail@example.com]

bold format(1) : ** bold "><'& **
bold format(2) : '' bold "><'& ''

bold format(1) : bold "><'&
bold format(2) : bold "><'&

italic format(1) : * italic "><'& *
italic format(2) : ''' italic "><'& '''

italic format(1) : italic "><'&
italic format(2) : italic "><'&

deleted text : %% deleted "><'& %%

deleted text : deleted "><'&

footnote1((footnote1 "><'& http://www.google.com )) foobar1.
footnote2((footnote2 "><'& http://www.google.com )) foobar2.

footnote1*1 foobar1.
footnote2*2 foobar2.

Heading1"><'&


preformatted text. "><'&
preformatted text. "><'&
preformatted text. "><'&
preformatted text. "><'&

Heading2"><'&


blockquote. "><'&
blockquote. "><'&

blockquote. "><'&
blockquote. "><'&

blockquote. "><'&
blockquote. "><'&

Heading3"><'&
  • item1 "><'&
    • item1_1 "><'&
    • item1_2 "><'&
      • item1_2_1 "><'&
      • item1_2_2 "><'&
    • item1_3 "><'&
  • item2 "><'&
    • item2_1 "><'&
  • item3 "><'&

  1. item1 "><'&
    1. item1_1 "><'&
    2. item1_2 "><'&
      1. item1_2_1 "><'&
      2. item1_2_2 "><'&
    3. item1_3 "><'&
  2. item2 "><'&
    1. item2_1 "><'&
  3. item3 "><'&
Heading4"><'&
dt1 "><'&
data definition1 "><'&
dt2 "><'&
data definition2 "><'&
dt3 "><'&
data definition3 "><'&

dt1 "><'&
data definition1 "><'&
dt2 "><'&
data definition2 "><'&
dt3 "><'&
data definition3 "><'&

TABLE examples

data1 data2 data3
data4 "><'& data5 "><'& data6 "><'&
http://example.com/ aaaaaaaa
aaaaaaaaa
bbbbbbbbbbbbbb

L: col10 c: col11 r: col12
col13 col14 col15
col16 col17 col18
col19 col20 col21
*1: footnote1 "><'& http://www.google.com
*2: footnote2 "><'& http://www.google.com

プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2008-11-23 18:31:05
md5:6f018c08c0cdd72b152cc690a8d7619e
sha1:2838a2b4d73b2a00ea3e066516dace47683f9576