電源ON直後に設定の変更は可能か?

電源ON直後のWindowsが立ち上がる前に設定の変更ができる方法はありますか?

重要なお知らせ

以下の文章で「kemasel.exe」を利用する例が書かれておりますが、kemasel.exeが自動生成する autoexec.bat は、LongFileName でパスが記述されてしまいます。従って、kemasel.exe を実行後、手動で autoexec.bat を編集し、パスの変更を行ってください。

【よくある例】c:\program files\... → c:\progra~1\...


できないこともないわけではありませんが、お勧めしません

上級者向けです(が、お気楽ツールもあります)
「これでできるかもしれません」程度に読んでください(全ての環境でできる保証はまるで無い)。作者はWin98でしかも自分の環境しか試していませんのでWin95については全く考慮していません。

Win98ユーザーで、コマンドラインオプションという言葉に抵抗がなく、バッチファイルの作成ができ、regeditを使用でき、Windowsが起動しなくなっても動揺せず、かつ、楽をするためなら手間を惜しまない方(?)であれば試す価値はあると思います。

と思いましたが「えいや!」とツールを作ってみました。下記の一連のファイル作成を一括で行ってくれます。
相変わらず結果は全く保証しませんがバッチファイルの動作は正常であることは確認しています。もちろん、我が家では設定切り替えも正常に動作しています。下記の「下ごしらえ」も読んでください。
filekemasel.lzhここからダウンロードできます。

仕組み(実は1回再起動をかけてます)

概要は以下のとおりです。図中の各ファイルのパスはあまり正しくないです。

wg0401.gif

ポイント

  • 「電源ON後にWindowsが起動した直後」に1回だけ KemaNet を起動できるようにレジストリを書き換える(kemaset.bat)
  • レジストリ書き換えはDOSの状態のときに regedit に A.REG ファイルを結合してもらう
  • 設定の選択は kemaset.bat 内で choice を用いて行う。デフォルトで何もしないようにしておく(大雑把な解説は下のほうに書いてあります)

材料

以下はお好みに合わせてどうぞ。

  • テキストエディタ(メモ帳で可)
  • regedit
  • choice(c:\windows\commandに普通入ってます)
  • DOS窓
  • いくらかの技、勇気、知恵と最大限の注意力

下ごしらえ(ツールを使用する場合も気をつけること)

  1. 予めKemaNetで設定を複数作成します。
    この時、設定名にはスペースを含めないでください。
  2. KemaNetのオプションで「再起動必要時に確認する」のチェックを外しておくとよいかも
    しれません(好みで決めてください)

以下の項目はツールを使用する場合、自動生成されますが、「このツールは何やってんだろう?」
という方はご一読ください。

kemaset.bat の作成

KemaNetをインストールしたディレクトリなどに kemaset.bat ファイルを作成します。

kemasel.batの中身

@echo off
echo ----------------
echo KemaNet 設定選択
echo ----------------
echo A:自宅
echo B:自宅Proxy
echo.
echo X:キャンセル
echo ----------------
choice /c:XAB /t:X,10 選択してください(デフォルト:X)
if errorlevel 3 goto KEMA_B
if errorlevel 2 goto KEMA_A
echo キャンセルされました
goto QUIT
:KEMA_B
echo KEMA_B
regedit c:\progra~1\kemanet\B.reg
goto QUIT
:KEMA_A
echo KEMA_A
regedit c:\progra~1\kemanet\A.reg
goto QUIT
:QUIT

上の場合、Aを選択するとKEMA_Aへジャンプし、A.REGファイルをレジストリに書き込みます。
ポイントは

choice /c:XAB /t:X,10 選択してください(デフォルト:X)

で、choiceは選択された文字列が何番目になるのかをerrorlevelで返しますので
大きい順にif文で分岐させます。Xを最初にしてエラーコードが一番小さくなるようにしておくと
全てのif文をスルーして「キャンセルされました」を表示後、終了します。

また if や choice, goto などの文法に付いてはDOS窓で if /? とか choice /? と入力すると
たいてい出るのでご確認ください。

また、この段階で実際に kemaset.bat を起動して、自分が選択したメニューと選択後の処理が
正しいことを確認しましょう。上の例ではAを選択したときに「KEMA_A」と表示されればよいです。
全ての選択肢を試しておきましょう。当たり前ですがこの段階では regedit c:\temp\A.reg の文は
実行するとエラーになります。

?.reg の作成

KemaNetをインストールしたディレクトリなどに ?.reg ファイルを作成します。

A.REGの中身

REGEDIT4
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnce]
"KemaNet"="C:\\Program Files\\KemaNet\\kemanet.exe 自宅 /c"

[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnce]の下に
適当な名前のキーで文字列属性のデータ(実行ファイル名)をレジストリに書き込むと
該当のプログラムを1回だけWindows起動時に実行するらしい、ということが実験から
判明しました。これを利用しています。

上の場合、設定名「自宅」を反映します。/C オプションは問い合わせのダイアログを
いかなる場合も表示しないようにするためです。この辺はお好きなように併せて変更してください。

なお、A.REGファイルではパスの区切りの「\」は「\\」と記述する必要があります。
この段階で A.REG ファイルをダブルクリックしてみてレジストリに結合し、regedit で正しく追加されることを確認します。その後、kematest.bat から起動してみて連動試験を行いましょう。

autoexec.bat の編集

autoexec.bat の最終行に次の1行を追加します。

call C:\Progra~1\kemanet\kemaset.bat

これで電源ON(再起動時)にkemaset.batが呼び出されます。

いざ、挑戦!

再起動してみて満足の行く結果になるかどうか試してみましょう。作者の失敗としては、

  • A.REG, B.REG を作成するときに「\\」と書くのを忘れ、レジストリにうまいことKemaNetを起動させるキーが登録できなかった
  • デフォルトのXの飛び先がおかしかった(if文の順番とchoiceの文字順番がよろしくなかった)
  • KEMA_A は KEMA_B をコピーして「B→A」の修正をし忘れた為に、A も B も同じ設定が反映されてしまった

などです。現在、もう少しましな方法を考えているところですがどうなることやら・・・


添付ファイル: filewg0401.gif 414件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2016-05-10 (火) 01:11:38