☆ プラグイン自作方法
DEKOさんのサイトの情報を噛み砕き、実践的にしたものです。
プラグインの正体はただのinfファイルなので、メモ帳1本だけでも作れます。
記述する内容は、大きく分けて、ファイルのコピーとレジストリの追加です。
まずは先頭部分に、以下↓を書き込みます。文字コードはunicodeではなくasciiで!
行頭の、; がコメントとなり、ビルド時には無視されます。URLなどは適宜書き換えて...
; PE Builder v3 plug-in INF file
; Created by Bart Lagerweij
; http://www.nu2.nu/pebuilder/
;
; プラグインの短い説明
[Version]
Signature= "$Windows NT$"
[PEBuilder]
Name="NiceNameOfPlugin"
Enable=0
Help="ReadMe_pe.txt"
---------------------------------------------------------
次に、ファイルのコピーを指定します。
[WinntDirectories]
BartPEを出力するときのコピー先を指定するセクション。
b="
Documents and settings\all users\SendTo",2
というようにします。一番左は、ディレクトリIDを指定する、ということですが、通常は、aからzまでのどれかを使います。また、最初から指定済みのID(番号)もあります。
また、一番右の数字は、属性を指します。...ですが、普通のソフトなら、2 で問題ないだろうと思われます。
[SourceDisksFiles]
プラグインフォルダ等に用意したファイルを指定するセクション。
TeraPad.lnk=
b,,1
左に、ソースとなるファイルのファイル名。フォルダ内でも、相対パスで指定可能。
真ん中の、b は[WinntDirectories]で指定したIDに対応するものを書く。
最後の属性は、通常は 1 を指定するときが圧倒的です。
ちなみに、,と,の間に文字列を指定すると、BartPEをビルドするときに、リネームしてくれます。
[SourceDisksFolders]
プラグインフォルダ等に用意したフォルダを丸ごとコピー指定するセクション。
files=a
これも、[WinntDirectories]で指定したIDなどを書く。
よく使いそうな予約ID
ID Directory名
1 \
2 system32
4 system32\drivers
5 system
15 system32\dhcp
20 inf
ファイルのコピー◇まとめ
[WinntDirectories]
a="Programs\TeraPad",2 (通常は、Programsという名前のフォルダを指定する。)
b="Documents and settings\all users\SendTo",2 (送るメニュー)
c="Documents and settings\all users\Start Menu",2 (スタートメニュー)
[SourceDisksFolders]
files=a (Programs\TeraPadフォルダにコピー)
[SourceDisksFiles]
autorun0_TPCINI.cmd=2,,1 (ID=2、つまりsystem32フォルダにコピー)
TeraPad.lnk=b,,1 (どちらもショートカットファイルの指定)
TeraPad.lnk=c,,1
この場合、
filesフォルダ以下が、CDのルート\Programs\TeraPad にコピー、
TeraPad.lnk が、CDのルート\Documents and settings\all users\SendTo 等にコピーされる。
---------------------------------------------------------
次に、レジストリの書き換えを行います。
といっても、大抵は関連付けでしょうが。
[Software.AddReg]
レジストリの、
HKEY_LOCAL_MACHINE\SOFTWARE に、キーや値を追加する。
関連付けをするために使うことが多い。
; bat
0x2,"Classes\batfile\shell\edit\command",,"%SystemDrive%\appli.exe ""%1"""
という風に使う。
一番左は、レジストリのエントリ(文字列とかDWORDとか)を示す。
0x0,(REG_NONE) キーのみを作成します。
0x1,(REG_SZ) 文字列
0x2,(REG_EXPAND_SZ) 文字列(環境変数参照)
0x3,(REG_BINARY) バイナリデータ
0x4,(REG_DWORD) 32ビットの整数
0x7,(REG_MULTI_SZ) 複数行文字列
[Default.AddReg]
レジストリの、
HKEY_CURRENT_USER に、キーや値を追加する。
Explorerの設定などに多い。
使い方は[Software.AddReg]と同じ。
[SetupReg.AddReg]
レジストリの、
HKEY_LOCAL_MACHINE\SYSTEM に、キーや値を追加する。
主に、ドライバの登録などに使う。他のプラグインで消せないことに注意。
[Software.DelReg]
[Software.AddReg]などにより書かれた
HKEY_LOCAL_MACHINE\SOFTWARE 以下の指定したキーを消す。
"
Classes\htmlfile\ShellEx\IconHandler"
のように指定する。
このとき、キーを複数階層消すときは、必ず下位のキーから順に消していく。
普通の人には用のないものかも。Custom系プラグイン(E&IECustomなど)では使うけど。
[Default.DelReg]
[Default.AddReg]などにより書かれた
HKEY_CURRENT_USER 以下の指定したキーを消す。
使い方は[Software.DelReg]と同じ。
結局は?
実際にプラグインを作ろうとしたら、公開されているプラグインを参考に、
部分を書き換えたりするほうがいいと思います。
また、レジストリの書き換えた場所を突き止めるには、
1、レジストリのエクスポート
2、該当する行為をする
3、もう一回レジストリのエクスポート
4、
Regdiffを使い、有効な差を抜き出す。
後は、試行錯誤ですね。
---------------------------------------------------------
ここに書いたのはすべてではありません。
あくまで、通常のソフトを組み込むのに必要最低限の内容です。
詳しく知りたかったら、本家プラグインヘルプや、
DEKOさんの翻訳版を読んでください。