---> BartPE --> プラグイン自作方法 



☆ プラグイン自作方法



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さんの翻訳版を読んでください。