Top > MyMachine&Tips

CD-Rを挿入時に自動的に「ファイル」を開かせる

Windows用にCD-Rを焼くときに、Autorunに対応させたいときがあります。
CDの、いちばんあたまのディレクトリに「autorun.inf」をおくのですが、
構文は、
[autorun]
open=〜〜
icon=〜〜
という感じなのです。([autorun]や、open〜icon〜は、大小文字を区別しません)

しかし、Autorunは、実行形式のファイルしか開くことはできません。
つまり、CDを挿入したら、自動的にindex.htmlを開くようにしたくても、
[autorun]
open=index.html
などと書いてもダメなわけです。

では、どうするか?
  1. start.exeもしくはstartを使用する
  2. 関連付けに応じたプログラムを実行する
  3. rundll32.exeを使用する(本命)

1の場合

windows95/98にはstart.exeというプログラムが標準で入っています。
>start.exe ファイル名
とすると、「ファイル名」の拡張子に応じたプログラムが起動するはずです。
NTの場合はstartはcmd.exeの組み込みコマンドなので
>start ファイル名
です。
「.exe」は省略できますので、両方に対応させるときは、「start ファイル名」がいいと思います。

この場合の欠点は、起動時にコマンドプロンプトが表示されることです。
わかりやすくいえば、DOS窓が開いてしまいます。
これはかっこ悪いです。

2の場合

そこで、「拡張子に関連付けられたアプリケーションでファイルを開く」ということしかしないプログラムを用意することにします。
MicrosoftのCDでも、この方法がとられている場合があるようです。shelext.exeだったかな?
Vectorのライブラリにもいくつかありましたし、自分で作ってもそれほどたいしたプログラムではないと思います。
たとえば、「shelext.exe」をCDの「autorun」フォルダに、「index.html」をCDのルートに用意したとすると、「autorun.inf」は以下のようになります。
[autorun]
open=autorun\shelexe.exe index.html

3の場合

htmlのファイルを開くときに限りますが、もっと「かっこよさげ」な方法があります。(ホントはhtmlに限るわけではないのですが…)
ここからは、理屈の説明は抜きにします。
どうやって説明したらいいのかわからないからです。
このコマンドだけでだいたいわかってください。
下のサンプルは、同じくCDのルートにindex.htmlを用意した場合です。
[autorun]
open=rundll32.exe url,FileProtocolHandler index.html
「FileProtocolHandler」は大文字と小文字を区別します。気をつけてください。
説明しないといいながら、ちょっとだけ補足。
ここの「url」は、url.dllを呼び出すためのものなので、「url.dll,FileProtocolHandler」と書いてもかまいません。

上記でわからない人向け

CDを作るときは、だいたい以下のようになるように配置してください。
赤字のファイルだけは、場所を変えないでください。
  • 新規作成ディスク
    • autorun.inf
    • index.htm
    • その他のファイル
    • その他のファイル
    • その他のフォルダ
      • その他のファイル
      • その他のファイル
    • その他のフォルダ
      • その他のファイル
      • その他のファイル
autorun.infは、必ずCDのいちばん上のフォルダに入れてください。
今回は、簡単にするために、autorun.infとindex.htmを同じフォルダ(CDのいちばん上の階層)に置きます。
autorun.infは、メモ帳で作成します。
メモ帳で、以下のように入力します。
[autorun]
open=rundll32.exe url,FileProtocolHandler index.htm
入力できたら、名前をつけて保存で、autorun.infとします。
autorun.inf.txtとなってしまった場合、名前を変えてください。

このautorun.infを、HTMLといっしょに焼きこみます。
今回はHTMLの最初に開くページはindex.htmとしていますので、その名前にしてください。