Jesse,
You can create virtual directories programmatically. You need to use ADSI... and
can do either with VBScript or directly from C#.
Here's an old chunk of code that creates a virtual directory:
/// <summary>
/// Create a virtual directory
/// </summary>
/// <param name="WebSite">1 for the default website, 2 etc for non-default web
sites</param>
/// <param name="VDirName">Name of directory to create</param>
/// <param name="Path">File system path for directory</param>
/// <param name="RootDir">Create a root level directory or actual virtual
directory</param>
private void CreateVDir(string WebSite, string VDirName, string Path, bool
RootDir)
{
System.DirectoryServices.DirectoryEntry IISSchema;
System.DirectoryServices.DirectoryEntry IISAdmin;
System.DirectoryServices.DirectoryEntry VDir;
bool IISUnderNT;
//
// Determine rough version of IIS
//
IISSchema = new
System.DirectoryServices.DirectoryEntry("IIS://localhost/Schema/AppIsolated");
if (IISSchema.Properties["Syntax"].Value.ToString().ToUpper() == "BOOLEAN")
IISUnderNT = true;
else
IISUnderNT = false;
IISSchema.Dispose();
//
// Get the admin object
//
IISAdmin = new
System.DirectoryServices.DirectoryEntry("IIS://localhost/W3SVC/" + WebSite +
"/Root");
//
// If we're not creating a root directory
//
if (!RootDir)
{
//
// If the virtual directory already exists then delete it
//
foreach(System.DirectoryServices.DirectoryEntry v in IISAdmin.Children)
{
if (v.Name == VDirName)
{
//
// Delete the specified virtual directory if it already exists
//
IISAdmin.Invoke("Delete", new string [] { v.SchemaClassName,
VDirName });
IISAdmin.CommitChanges();
}
}
}
//
// Create the virtual directory
//
if (!RootDir)
{
VDir = IISAdmin.Children.Add(VDirName, "IIsWebVirtualDir");
}
else
{
VDir = IISAdmin;
}
//
// Setup the VDir
//
VDir.Properties["AccessRead"][0] = true;
VDir.Properties["AccessExecute"][0] = true;
VDir.Properties["AccessWrite"][0] = false;
VDir.Properties["AccessScript"][0] = true;
VDir.Properties["AuthNTLM"][0] = false;
VDir.Properties["EnableDefaultDoc"][0] = true;
VDir.Properties["EnableDirBrowsing"][0] = false;
VDir.Properties["DefaultDoc"][0] = true;
VDir.Properties["Path"][0] = Path;
//
// NT doesn't support this property
//
if (!IISUnderNT)
{
VDir.Properties["AspEnableParentPaths"][0] = true;
}
//
// Set the changes in stone
//
VDir.CommitChanges();
//
// Make it a web application
//
if (IISUnderNT)
{
VDir.Invoke("AppCreate", false);
}
else
{
VDir.Invoke("AppCreate2", 1);
}
}
Regards,
Rob
--
RMTrack a great bug tracking tool! Fully customizable, automated
workflow, e-mail notification, import utility, and much much more.
Setup a demo at www.rmtrack.com (version 1.2.2 now available!)
===================================
This list is hosted by DevelopMentor� http://www.develop.com
NEW! ASP.NET courses you may be interested in:
2 Days of ASP.NET, 29 Sept 2003, in Redmond
http://www.develop.com/courses/2daspdotnet
Guerrilla ASP.NET, 13 Oct 2003, in Boston
http://www.develop.com/courses/gaspdotnet
View archives and manage your subscription(s) at http://discuss.develop.com