Introduction
This is a simple IIS utility to create a new virtual directory with predefined settings. I found a sample code to create a virtual directory on the Internet (Original article here). I just added some features into that.....
So the credit for this goes to original author.
Background
In big projects, it is often required to create and configure new virtual dirs. I tried to create the utility which will ease the work of the configuration management team.
Using the Code
The code is attached. Now it's your job to enhance the utility by adding some more features!
Dim IISSchema As New System.DirectoryServices.DirectoryEntry_
("IIS://localhost/Schema/AppIsolated")
Dim CanCreate As Boolean = _
Not IISSchema.Properties("Syntax").Value.ToString.ToUpper() = "BOOLEAN"
IISSchema.Dispose()
Dim AppName As String = txtVirtDirName.Text, path As String = txtPath.Text
If CanCreate Then
Dim PathCreated As Boolean
Dim IISAdmin As New System.DirectoryServices.DirectoryEntry_
("IIS://localhost/W3SVC/1/Root")
If Not System.IO.Directory.Exists(path) Then
System.IO.Directory.CreateDirectory(path)
PathCreated = True
End If
Dim VDir As System.DirectoryServices.DirectoryEntry = Nothing
Dim bAlreadyThere As Boolean = False
For Each VD As System.DirectoryServices.DirectoryEntry In _
IISAdmin.Children()
If VD.Name = AppName Then
IISAdmin.Invoke("Delete", New String() _
{VD.SchemaClassName, AppName})
IISAdmin.CommitChanges()
MsgBoxStyle.Information, "Create Virtual Directory")
VDir = VD
bAlreadyThere = False
Exit For
End If
Next VD
If (Not bAlreadyThere) Then
VDir = IISAdmin.Children.Add(AppName, "IIsWebVirtualDir")
End If
VDir.Properties("Path").Item(0) = path
VDir.Properties("AppFriendlyName")(0) = AppName
VDir.Properties("EnableDirBrowsing").Item(0) = True
VDir.Properties("AccessRead").Item(0) = True
VDir.Properties("AccessExecute").Item(0) = True
VDir.Properties("AccessWrite").Item(0) = False
VDir.Properties("AccessScript").Item(0) = True
VDir.Properties("AuthNTLM").Item(0) = chkWinAuthenticate.Checked _
VDir.Properties("AuthAnonymous").Item(0) = chkAnonymous.Checked
If (chkAnonymous.Checked) Then
VDir.Properties("AnonymousUserName").Item(0) = txtUser.Text
VDir.Properties("AnonymousUserPass").Item(0) = txtPassword.Text
VDir.Properties("AnonymousPasswordSync").Item(0) = False
End If
VDir.Properties("EnableDefaultDoc").Item(0) = chkDefaultDocs.Checked
VDir.Properties("DefaultDoc").Item(0) = txtDefaultDocuments.Text
VDir.Properties("AspEnableParentPaths").Item(0) = True
VDir.CommitChanges()
If Not bAlreadyThere Then VDir.Invoke("AppCreate2", 2)
If (chkASPNET2.Checked) Then
Dim prcProcess As System.Diagnostics.Process
prcProcess = System.Diagnostics.Process.Start_
(System.Environment.GetEnvironmentVariable("windir") + _
"\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis", _
" -s /W3SVC/1/Root/" + txtVirtDirName.Text)
prcProcess.WaitForExit()
End If
MessageBox.Show("Done", "Hurray...", MessageBoxButtons.OK, _
MessageBoxIcon.Information)
End If
Features
- Create new virtual directories overwriting existing ones
- Configure ASP.NET 2.0 or 1.1 Framework
- Configure your own user under anonymous access
- Configure default pages
- Test immediately
Enhancements -- Your Job!
- I don't have IIS 7. Test it on IIS 7 and let me know
- Configure the appropriate application pool in IIS 6
NOTE : This is raw code just to get an idea of how to manage virtual directories. You need to modify the code according to your need.