2013年01月19日


VBScript の既定のスクリプトホストの変更

『スクリプトホスト』は、.vbs と .wsf という拡張子に関係付けられた、VBScript のソースコードを読み込んで実行するアプリケーションの事です。

VBScript では、cscript.exewscript.exe という二つのスクリプトホストがあり、前者はコマンドプロンプト用で、後者は Windows アプリケーション用で、実際どのような違いが出るかというと、Wscript.echo という処理が、前者では標準出力に出力されるのに対して、後者ではメッセージボックスに出力されるというところです。

当然、コマンドプロンプトを前提にして作成されたスクリプトで Wscript.echo が使われていると、Windows アプリケーションでは、メッセージボックスが表示されつづけるという問題が出てしまいます。ですから、どちらのスクリプトホストで実行されるかは良く考えて運用する必要があるわけです。

そもそも、デフォルトのスクリプトホストは、Windows アプリケーションとして起動されるので、エクスプローラから開いた場合は Windows アプリケーションとして実行されてしまいます。これらの問題を避けるには、いずれかのスクリプトホストを //H:CScript 引数を付けて実行するとデフォルトのスクリプトホストが変更されます( 戻す場合は //H:WScript で実行 )

さらに、これらの設定の大元はレジストリの記述なので、そこを変更してしまうと前述の切り替えを行わなくても同じ効果を得る事ができてしまいますが、元に戻すには直接レジストリを書き換える必要があります。
( 以下は、.vbs 用で、.wsf は WSFFile というエントリが別にあって管理されています )
HKEY_CLASSES_ROOT\VBSFile\Shell\Open\Command
HKEY_CLASSES_ROOT\VBSFile\Shell\Open2\Command

または

HKEY_LOCAL_MACHINE\SOFTWARE\Classes\VBSFile\Shell\Open\Command
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\VBSFile\Shell\Open2\Command
>reg query HKEY_CLASSES_ROOT\VBSFile\Shell\Open\Command

HKEY_CLASSES_ROOT\VBSFile\Shell\Open\Command
    (既定)    REG_EXPAND_SZ    "%SystemRoot%\System32\WScript.exe" "%1" %*


>reg query HKEY_CLASSES_ROOT\VBSFile\Shell\Open2\Command

HKEY_CLASSES_ROOT\VBSFile\Shell\Open2\Command
    (既定)    REG_EXPAND_SZ    "%SystemRoot%\System32\CScript.exe" "%1" %*
>cscript /?
Microsoft (R) Windows Script Host Version 5.8
Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.

使い方 : CScript scriptname.extension [オプション...] [引数...]

オプション :
 //B         バッチ モード : スクリプトのエラーおよびプロンプトを非表示にする
 //D         アクティブ デバッグを使用可能にする
 //E:engine  スクリプト実行時にエンジンを使用する
 //H:CScript 既定のスクリプト ホストを CScript.exe に変更する
 //H:WScript 既定のスクリプト ホストを WScript.exe に変更する (既定値)
 //I         対話モード (既定値、//B と逆の動作)
 //Job:xxxx  WSF ジョブを実行する
 //Logo      ロゴを表示する (既定値)
 //Nologo    ロゴを表示しない : 実行時に見出しを表示しない
 //S         このユーザーの現在のコマンド ライン オプションを保存する
 //T:nn      秒単位のタイムアウト時間 :  スクリプトを実行できる時間の最大値
 //X         デバッガでスクリプトを実行する
 //U         コンソールからリダイレクトされた I/O に Unicode を使用する



タグ:WScript cscript
posted by at 02:30 | Comment(0) | 基本事項 | このブログの読者になる | 更新情報をチェックする


この記事へのコメント
コメントを書く
お名前:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
※ブログオーナーが承認したコメントのみ表示されます。