用.net在iis中创建虚拟目录 
使用.net的目录服务就可以访问iis的设置,添加虚拟目录其实就是创建一个directoryentry
复杂的在于directoryentry的属性,其实就是虚拟目的一些配置,比如,权限,是否要log,应用程序名等
properties非常多,而且文档不太好找
详细可以参考msdn以下内容
help://ms.msdnqtr.2004jul.1033/iissdk/iis/configuring_properties_in_the_iis_user_interface.htm
代码示例:
const string constiiswebsiteroot = "iis://localhost/w3svc/1/root";
   directoryentry root = new directoryentry(constiiswebsiteroot);
   directoryentry entry = new directoryentry(constiiswebsiteroot + "/" + virtualdirname);
directoryentry tbentry = root.children.add(virtualdirname, "iiswebvirtualdir");
   //must be end with a '/' 
   tbentry.properties["path"][0] = virtualdirpath;
   tbentry.invoke("appcreate",true);
   tbentry.properties["accessread"][0] = true;
   tbentry.properties["contentindexed"][0] = false;
   tbentry.properties["defaultdoc"][0] = "index.asp";
   tbentry.properties["appfriendlyname"][0] = virtualdirname;
   tbentry.properties["appisolated"][0] = 2;
   tbentry.properties["accessscript"][0] = true;   
   tbentry.properties["dontlog"][0] = true;   
   
   tbentry.commitchanges();
//************************************************************
用windows 脚本语言创建虚拟目录. 
set shell = wscript.createobject( "wscript.shell" ) 
if wscript.arguments.count < 2 then 
usage = "usage: thevbs virtual_directory_name directory_location_to_map" 
wscript.echo usage 
wscript.quit 
end if 
vdirname = wscript.arguments(0) 
vdirpath = wscript.arguments(1) 
' get the name of the current directory 
set fso = wscript.createobject( "scripting.filesystemobject" ) 
vdirpath = fso.getfolder( vdirpath ).path 
' does this iis application already exist in the metabase? 
on error resume next 
set objiis = getobject( "iis://localhost/w3svc/1/root/" & vdirname ) 
if err.number = 0 then 
result = shell.popup( "a virtual directory named " & vdirname & " already exists. " & vbcrlf & vbcrlf & "would you like it re-mapped for this sample?", 0 ,"remap virtual directory?", 4 + 32 )' 4 = yesno & 32 = question 
if result = 6 then ' 6 = yes 
deletevirtualdirectory vdirname 
else 
wscript.quit 
end if 
end if 
'using iis administration object , turn on script/execute permissions and define the virtual directory as an 'in-process application. 
set objiis = getobject( "iis://localhost/w3svc/1/root" ) 
set vdirobj = objiis.create( "iiswebvirtualdir", vdirname ) 
vdirobj.path = vdirpath 
vdirobj.authntlm = true 
vdirobj.accessread = true 
vdirobj.accesswrite = true 
vdirobj.accessscript = true 
vdirobj.accessexecute = true 
vdirobj.authanonymous = true 
'vdirobj.anonymoususername = owner 
vdirobj.anonymouspasswordsync = true 
vdirobj.appcreate true 
vdirobj.setinfo 
if err.number > 0 then 
shell.popup err.description, 0, "error", 16 ' 16 = stop 
wscript.quit 
end if 
' get the name of the account for the anonymous user in iis 
owner = vdirobj.anonymoususername 
' change necessary folder permissions using cacls.exe 
aclcmd = "cmd /c echo y| cacls " 
aclcmd = aclcmd & """" & vdirpath & """" 
aclcmd = aclcmd & " /e /g " & owner & ":c" 
rtc = shell.run( aclcmd , 0, true ) 
aclcmd = "cmd /c echo y| cacls " 
aclcmd = aclcmd & """" & vdirpath & """" 
aclcmd = aclcmd & " /e /g ""vs developers"":c" 
rtc = shell.run( aclcmd , 0, true ) 
if err.number > 0 then 
shell.popup err.description, 0, "error", 16 ' 16 = stop 
wscript.quit 
else 
res = vdirname & " has been created at" & vbcrlf & vdirpath 
shell.popup res, 0, "all done", 64 ' 64 = information 
end if 
sub deletevirtualdirectory( nameofvdir ) 
set iis = getobject("iis://localhost/w3svc/1/root") 
iis.delete "iiswebvirtualdir", vdirname 
if err.number <> 0 then 
errorstring = "unable to delete exisiting virtual directory." 
if err.description is nothing then 
errorstring = errorstring & "error code: " & err.number 
else 
errorstring = errorstring & "description: " & err.description 
end if 
shell.popup errorstring, 0, "error", 16 ' 16 = stop 
end if 
end sub 
//********************  end
新闻热点
疑难解答
图片精选