Click here to Skip to main content
15,881,882 members
Articles / Web Development / IIS
Article

IIS Utility to Create Virtual Directory - Advanced

Rate me:
Please Sign up or sign in to vote.
3.28/5 (7 votes)
23 Oct 2007CPOL 54.8K   304   35   15
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)


Written By
Web Developer
United States United States
He is just an ordinary developer and curious about new technologies. Fond of detailed analysis of How Stuff Works! He likes debugging, trouble-shooting and making out the application of difficulties. Finding another ways to achieve the result is his passion!

Comments and Discussions

 
GeneralCode fails for IIS7 Pin
NanaAM11-Oct-07 2:03
NanaAM11-Oct-07 2:03 
GeneralRe: Code fails for IIS7 Pin
PuneWala11-Oct-07 2:34
PuneWala11-Oct-07 2:34 
Generalbug Pin
Fredrik B12-Sep-07 22:48
Fredrik B12-Sep-07 22:48 
GeneralRe: bug Pin
PuneWala12-Sep-07 22:56
PuneWala12-Sep-07 22:56 
General[Message Deleted] Pin
PuneWala12-Sep-07 2:40
PuneWala12-Sep-07 2:40 
GeneralRe: Remote Server Pin
Steve Hansen12-Sep-07 3:51
Steve Hansen12-Sep-07 3:51 
GeneralRe: Remote Server Pin
PuneWala12-Sep-07 18:10
PuneWala12-Sep-07 18:10 
GeneralRe: Remote Server Pin
Steve Hansen12-Sep-07 20:24
Steve Hansen12-Sep-07 20:24 
GeneralRe: Remote Server Pin
Andrew Harrs12-Sep-07 19:13
Andrew Harrs12-Sep-07 19:13 
GeneralRe: Remote Server Pin
PuneWala12-Sep-07 19:19
PuneWala12-Sep-07 19:19 
GeneralRe: Remote Server Pin
Andrew Harrs12-Sep-07 19:32
Andrew Harrs12-Sep-07 19:32 
GeneralRe: Remote Server Pin
PuneWala12-Sep-07 19:35
PuneWala12-Sep-07 19:35 
GeneralRe: Remote Server Pin
Andrew Harrs12-Sep-07 20:07
Andrew Harrs12-Sep-07 20:07 
AnswerRe: Remote Server Pin
PuneWala12-Sep-07 20:11
PuneWala12-Sep-07 20:11 
GeneralRe: Remote Server Pin
Andrew Harrs12-Sep-07 20:44
Andrew Harrs12-Sep-07 20:44 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.