WEB上のソースを利用する(2) -- 実行側スクリプトもWEB上に置く :【VBScript】

WEB上のソースを利用する(1) では、まず「ライブラリ(実際は関数)」を WEB 上に置いて
ローカルから呼び出して利用するものでしたが、今回は、実行する側のスクリプトも WEB上
に置いて使用します。

実際問題、WEB 上に置いても、ダウンロードしてから実行するのであればさほど考える
必要の無い事柄ですが( ただアップロードしておけば良いので )、

自分の WEB サイトに置くという事になると話は別です。

Windows では、アプリケーションをダウンロードしてハードディスクに保存しなくても、
「そのまま実行する」という方法があります。もちろん、自分の作ったものだから信頼
して実行するのであって、他人のサイトのスクリプトをむやみに中身を見ないで実行
してはいけませんが。


このような、セキュリティ上の問題ユーザに警告する為に、一般的にはダウンロードした 実行可能なファイルは、実行時に警告ダイアログが出るようになっています。 ( レジストリを変更すると出無いようにする事は可能です )

ブラウザでダウンロード
WEB サイトに実行用ディレクトリを置いて、.htaccess を設定する
.htaccess
AddType "application/script" .wsf .reg .txt .htm .html .asp .hta .vbs


ライブラリの場合は、単なるテキストとして認知させていましたが、実行または保存する
都合があるので、他のブラウザでも正しく認識させる必要があるので、上記の
ような設定をしておきます( Firefox では保存しかできませんが )
http://winofsql.jp/wsf/act_web.wsf
上記リンクはダウンロード可能です。但し、実行してしまうとカレントディレクトリに
ファイルを作成するので、デスクトップにファイルを作成してしまいます。

※「即実行」を行う時には、このディレクトリの場所に十分留意する必要があります。
act_web.wsf
<JOB>
<OBJECT id="WshShell" progid="WScript.Shell" />
<SCRIPT language="VBScript" src="http://winofsql.jp/webwsh/toolWsh.vbs"></SCRIPT>

<SCRIPT language=VBScript>
' ***********************************************************
' 処理開始
' ***********************************************************

Dim ErrorMessage

strDir = WshShell.CurrentDirectory

Wscript.Echo strDir

' 上書きは不可
Call CreateMdb( strDir & "\db.mdb" )
if ErrorMessage <> "" then
	Wscript.Echo ErrorMessage
	ErrorMessage = ""
end if


' Google のロゴ
strUrl = "http://www.google.co.jp/intl/ja_jp/images/logo.gif"
Call HTTPDownload( strUrl, strDir & "\logo.gif" )
if ErrorMessage <> "" then
	Wscript.Echo ErrorMessage
	ErrorMessage = ""
end if

</SCRIPT>
</JOB>


せっかくなので、php として WEB サーバーに置くためには
「即実行」はともかく、ダウンロードして保存する場合、.php という拡張子
が問題になるので、これをどうにかする方法が以下です。

一つ目のヘッダーは、この php を VBScript として Windows に認識させるもので、
二つ目のヘッダーで、ファイル名を指定しています
三つ目のヘツダーはキャッシュしないようにする為のヘッダーです
( キャッシュ関係は、他にも同様のヘッダーがありますが、これが最も古い時代で有効だったものです )

また、php なので、act_web.php?fname=xxxxxx のようにして、php 側を
header( "Content-Disposition: attachment; filename={$_GET['fname']}.wsf" ); とすれば、
ダウンロードするファイル名を変更可能にできます
http://winofsql.jp/wsf/act_web.php
act_web.php
<?
header( "Content-Type: application/script; Charset=shift_jis" );
header( "Content-Disposition: attachment; filename=act_web.wsf" );
header( "Expires: Wed, 31 May 2000 14:59:58 GMT" );
?>
<JOB>
<OBJECT id="WshShell" progid="WScript.Shell" />
<SCRIPT language="VBScript" src="http://winofsql.jp/webwsh/toolWsh.vbs"></SCRIPT>

<SCRIPT language=VBScript>
' ***********************************************************
' 処理開始
' ***********************************************************

Dim ErrorMessage

strDir = WshShell.CurrentDirectory

Wscript.Echo strDir

' 上書きは不可
Call CreateMdb( strDir & "\db.mdb" )
if ErrorMessage <> "" then
	Wscript.Echo ErrorMessage
	ErrorMessage = ""
end if


' Google のロゴ
strUrl = "http://www.google.co.jp/intl/ja_jp/images/logo.gif"
Call HTTPDownload( strUrl, strDir & "\logo.gif" )
if ErrorMessage <> "" then
	Wscript.Echo ErrorMessage
	ErrorMessage = ""
end if

</SCRIPT>
</JOB>