Click here to Skip to main content
Click here to Skip to main content

IIS Utility to Create Virtual Directory - Advanced

, 23 Oct 2007
Rate this:
Please Sign up or sign in to vote.
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!

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)

About the Author

PuneWala
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 PinmemberNanaAM11-Oct-07 2:03 
GeneralRe: Code fails for IIS7 PinmemberHemantPune11-Oct-07 2:34 
Generalbug PinmemberFredrik B12-Sep-07 22:48 
GeneralRe: bug PinmemberHemantPune12-Sep-07 22:56 
GeneralExcellent Article Pinmemberrajantawate1(http//www.jhatak.com)12-Sep-07 6:23 
General[Message Deleted] PinmemberHemantPune12-Sep-07 2:40 
GeneralRe: Remote Server PinmemberSteve Hansen12-Sep-07 3:51 
GeneralRe: Remote Server PinmemberHemantPune12-Sep-07 18:10 
GeneralRe: Remote Server PinmemberSteve Hansen12-Sep-07 20:24 
GeneralRe: Remote Server PinmemberAndrew Harrs12-Sep-07 19:13 
GeneralRe: Remote Server PinmemberHemantPune12-Sep-07 19:19 
GeneralRe: Remote Server PinmemberAndrew Harrs12-Sep-07 19:32 
GeneralRe: Remote Server PinmemberHemantPune12-Sep-07 19:35 
GeneralRe: Remote Server PinmemberAndrew Harrs12-Sep-07 20:07 
AnswerRe: Remote Server PinmemberHemantPune12-Sep-07 20:11 
GeneralRe: Remote Server PinmemberAndrew Harrs12-Sep-07 20:44 

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

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

| Advertise | Privacy | Mobile
Web04 | 2.8.140721.1 | Last Updated 23 Oct 2007
Article Copyright 2007 by PuneWala
Everything else Copyright © CodeProject, 1999-2014
Terms of Service
Layout: fixed | fluid