「WSH」カテゴリーアーカイブ

ASPからWSHを起動する

ウェブページにWSHスクリプトを起動するスイッチを設けて、ウェブでWSHのOn/Offを行おうと思っていたんだけど、なかなかそのやり方がわからなかった。どこにもその方法が書いてなかったけど、試行錯誤で何とかできた。

ウェブページはtest.aspで、< %@ LANGUAGE="VBSCRIPT" %>
< % Dim WshShell Set WshShell = CreateObject("Wscript.Shell") WshShell.Run "cscript.exe c:\test.vbs", 0, True Response.Write("test complete!
" & vbcrlf)
Set WshShell = Nothing
%>
ただ test.vbs を起動して、「test complete!」と表示するだけ。

test.vbsは、Dim Fs,info
Set Fs = WScript.CreateObject("Scripting.FileSystemObject")
Const filename="C:\dummy.txt" 'ファイル名を決めます。

If Fs.FileExists(filename)=False Then
'FileExistsメソッド。引数が存在するファイル名ならTrue、存在しないとFalseを返す。
WScript.Echo filename & "というファイルは存在しません。"
WScript.Quit
End If

info="ファイル名=" & Fs.GetFileName(filename) & vbCrLf & _
"フルパス=" & Fs.GetAbsolutePathName(filename) & vbCrLf & _
"親フォルダ名=" & Fs.GetParentFolderName(filename) & vbCrLf & _
"ドライブ名=" & Fs.GetDriveName(filename) & vbCrLf & _
"拡張子=" & Fs.GetExtensionName(filename) & vbCrLf & _
"拡張子を除いた名前=" & Fs.GetBaseName(filename)

WScript.Echo info
と、dummy.txt の存在チェックを行う簡単なスクリプト。

ブラウザでtest.aspにアクセスすると、Microsoft VBScript 実行時エラー (0x800A0046)
書き込みできません。
と怒られてしまう。

そこで、c:\windows\system32にあるcscript.exeのIUSR_(マシン名)のアクセス権をフルコントロールにしてあげる。やり方は、cscript.exeを右クリックして、プロパティのセキュリティタブの「インターネット ゲスト アカウント」のアクセス許可で、フルコントロールの許可のボックスをチェックすればOK。あとはIISを再起動すれば無事aspからWSHが起動できるはず。