Click here to Skip to main content
65,938 articles
CodeProject is changing. Read more.
Articles / web / IIS

IIS Utility to Create Virtual Directory - Advanced

3.28/5 (7 votes)
23 Oct 2007CPOL 1   304  
This tool is useful to create new virtual directories with extra settings in One Click !
Screenshot - IISUtility.jpg

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!

VB.NET
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")
                'make sure folder exists
                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
                'If the virtual directory already exists then delete it
                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()
                        'MsgBox("Virtual directory already exists..!.", _
                            MsgBoxStyle.Information, "Create Virtual Directory")
                        'Exit Sub
                        VDir = VD
                        bAlreadyThere = False
                        Exit For
                    End If
                Next VD

                'Create and setup new virtual directory
                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 _
                    'True 'Integreted Windows(Authontocation)
                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

  1. Create new virtual directories overwriting existing ones
  2. Configure ASP.NET 2.0 or 1.1 Framework
  3. Configure your own user under anonymous access
  4. Configure default pages
  5. Test immediately

Enhancements -- Your Job!

  1. I don't have IIS 7. Test it on IIS 7 and let me know
  2. 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.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)