IIS 仮想ディレクトリを作成する VBScript( WSH )

  このスクリプトが置かれたディレクトリを仮想ディレクトリとして登録




ブラウザでダウンロード

ダウンロードした iis_vdir.lzh を解凍して、create_vdir.wsf を実行するだけで、
そのディリクトリを仮想ディレクトリとして IIS (既定の Web サイト) に登録します。

.php で、php-cgi.exe を登録します。
Root 仮想ディレクトリに 既に登録されている場合も上書きします

IIS Admin オブジェクトのリファレンスは こちら( IIsWebServer ) です。
開始・停止したい場合は、IIsWebServer オブジェクトで Start または Stop メソッドを使用します

仮想ディレクトリを作成しているのは、IIsWebVirtualDir オブジェクトです
ScriptMaps は、こちらから取る必要があります( IIsWebServer オブジェクトでは足りませんでした )

readme.txt
  
*************************************************************
■このスクリプトが置かれたディレクトリを
  仮想ディレクトリとして登録
*************************************************************

1) list_iis.wsf で、既定の Web サイトの情報を取得
2) create_vdir.wsf で作成または変更

仮想ディレクトリ名は実際のディレクトリ名が使われますが、
任意の名前にしたい場合は、22 行目の
strName = obj.Name
を
strName = "任意の名前"
に変更して下さい。

※ php の情報は strPhp = "C:\php-5.2.8-Win32\php-cgi.exe" を変更
※ 別のディレクトリで実行すると、その場所で更新になります
※ crun.vbs は外部ライブラリファイル
※ phpinfo.php は、php 実行確認用
※ check.asp は、asp 実行確認用
※ view.htm は、check.asp より #include しています

【チェック】
ディレクトリの権限で、少なくとも Users グループが登録されている必要があります
ファイルの書き込みを行う場合は、Users グループをフルコントロールにすると
問題を回避できると思います

■著作権その他

このプログラムはフリーです。どうぞ自由に御使用ください。
著作権は作者である私が保有しています。
また、本ソフトを運用した結果については、作者は一切責任を
負えせんのでご了承ください。

lightbox
  


create_vdir.wsf
  
<JOB>
<OBJECT id="WshShell"	progid="WScript.Shell" />
<OBJECT id="Fso"		progid="Scripting.FileSystemObject" />

<SCRIPT language="VBScript" src="crun.vbs"></SCRIPT>

<SCRIPT language=VBScript>
<JOB>
<OBJECT id="WshShell"	progid="WScript.Shell" />
<OBJECT id="Fso"		progid="Scripting.FileSystemObject" />

<SCRIPT language="VBScript" src="crun.vbs"></SCRIPT>

<SCRIPT language=VBScript>
' ***********************************************************
' 処理開始
'
' 既存の仮想ディレクトリでも、物理パスを変更可能
' ***********************************************************

' Cscript.exe で実行する
crun

' スクリプトが存在するディレクトリと名前
strCurPath = WScript.ScriptFullName
Set obj = Fso.GetFile( strCurPath )
Set obj = obj.ParentFolder
strCurPath = obj.Path & ""
strName = obj.Name
strPhp = "C:\php-5.2.8-Win32\php-cgi.exe"

' 仮想ディレクトリのパスを「既定の Web サイト」として設定
strVDir = "IIS://localhost/W3SVC/1/Root/" & strName

' 仮想ディレクトリが既に存在するフラグ
bExist = True

on error resume next
' 仮想ディレクトリのオブジェクトを取得
Set IIsWebVDirObj = GetObject(strVDir)
if Err.Number <> 0 then
	' 新規
	Set IIsWebVDirRootObj = GetObject("IIS://localhost/W3SVC/1/Root") 
	Set IIsWebVDirObj = _
		IIsWebVDirRootObj.Create("IIsWebVirtualDir", strName ) 
	' 物理パスを設定
	IIsWebVDirObj.Put "Path", strCurPath
	' 新規仮想ディレクトリ
	bExist = False
else
	Set IIsWebVDirRootObj = GetObject("IIS://localhost/W3SVC/1/Root") 
	' 変更( 物理パスが変わっていても、ここでセットされる )
	IIsWebVDirObj.Put "Path", strCurPath
end if
on error goto 0

' ルートの仮想ディレクトリのマッピングに追加して PHP を使用できるように構成
strMap = ""
bTarget = False
For each value in IIsWebVDirRootObj.ScriptMaps
	strCheck = Ucase((Split( value, "," ))(0))
	if strCheck = ".PHP" then
		strMap = strMap & vbTab & ".php," & strPhp & ",5,GET,POST"
		bTarget = True
	else
		if strMap <> "" then
			strMap = strMap & vbTab
		end if
		strMap = strMap & value
	end if
Next
if Not bTarget then
	strMap = strMap & vbTab & ".php," & strPhp & ",5,GET,POST"
end if
IIsWebVDirObj.Put "ScriptMaps", Split(strMap,vbTab)

' .asp ファイルの実行を許可
IIsWebVDirObj.Put "AccessScript", True

' 実行可能ファイルの実行を許可
IIsWebVDirObj.Put "AccessExecute", True		

' クライアントが要求したリソースに対するアクセス
IIsWebVDirObj.Put "AccessSource", True

IIsWebVDirObj.Put "AccessRead", True			' 読み取り
IIsWebVDirObj.Put "AccessWrite", True			' 書き込み
IIsWebVDirObj.Put "EnableDirBrowsing", True		' ディレクトリの参照

' ログファイルに書き込むかどうか( False で書き込む )
IIsWebVDirObj.Put "DontLog", False

' このリソースに索引を付ける
IIsWebVDirObj.Put "ContentIndexed", False

' インプロセス (0)、アウトプロセス (1)、またはプロセスプール内 (2)
' 2 が 中なので注意
IIsWebVDirObj.AppCreate2 2

' アプリケーションの名前
IIsWebVDirObj.Put "AppFriendlyName", "php実行可能ディレクトリ"

IIsWebVDirObj.Put "AspAllowSessionState", True	' セッション有効
IIsWebVDirObj.Put "AspSessionTimeout", 20		' セッションタイムアウト(分)
IIsWebVDirObj.Put "AspBufferingOn", True		' バッファ処理
IIsWebVDirObj.Put "AspEnableParentPaths", True	' ..\ 表記を使用可能
IIsWebVDirObj.Put "AspScriptTimeout", 90		' スクリプトタイムアウト(秒)

' 既定のドキュメントを読み込むようにする
IIsWebVDirObj.Put "EnableDefaultDoc", True
' 既定のドキュメント
IIsWebVDirObj.Put "DefaultDoc", "index.htm,index.html,index.php"

' ASP ファイルをキャッシュしない
IIsWebVDirObj.Put "AspScriptFileCacheSize", True

' 書き込み
IIsWebVDirObj.SetInfo


if bExist then
	Wscript.Echo "仮想ディレクトリ " & strName & " を変更しました"
else
	Wscript.Echo "仮想ディレクトリ " & strName & " を作成しました"
end if


</SCRIPT>
</JOB>
  

関連する記事
VBScript : IIS7 の 仮想ディレクトリ登録





  表示 (HTA)



  
<SCRIPT language="VBScript">

Dim strMessage

function SetMessage( strValue )
	strMessage = strMessage & strValue & vbCrLf
end function

function DisplayClass()

	Dim IISAdminObject

	strMessage = ""

	on error resume next
	Set IISAdminObject = GetObject(document.all("AdsPath").value)
	if Err.Number <> 0 then
		document.all("Result").innerText = _
			"オブジェクトを作成できませんでした"
		exit function
	end if

	SetMessage( "名称:" & IISAdminObject.Name )
	SetMessage( "クラス名:" & IISAdminObject.Class )
	SetMessage( "スキーマ:" & IISAdminObject.Schema )
	SetMessage( "GUID:" & IISAdminObject.GUID )
	SetMessage( "親:" & IISAdminObject.Parent )
	SetMessage( "場所:" & IISAdminObject.path )
	SetMessage( "セッションタイムアウト:" & IISAdminObject.AspSessionTimeout )
	SetMessage( "スクリプトタイムアウト:" & IISAdminObject.AspScriptTimeout )
	SetMessage( "AspMaxRequestEntityAllowed:" & _
		IISAdminObject.AspMaxRequestEntityAllowed )

	document.all("Result").innerText = strMessage
	on error goto 0

end function

</SCRIPT>

<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=Shift_JIS">
</HEAD>
<BODY>

<TABLE>
<TR>
<TD>
	<INPUT
		type=text
		name=AdsPath
		style='width:400'
		value="IIS://localhost/W3SVC/1/Root"
	>
</TD>
<TD>
	<INPUT
		type=button
		value="クラス表示"
		onClick='DisplayClass()'
	>
</TD>
</TR>
</TABLE>

<PRE id=Result>
</PRE>

</BODY>
</HTML>
  










  infoboard   管理者用   
このエントリーをはてなブックマークに追加





フリーフォントWEBサービス
SQLの窓WEBサービス

SQLの窓フリーソフト

素材

一般WEBツールリンク

SQLの窓

フリーソフト

JSライブラリ