this is a extra element for clear the floated element
IIS控制管理(Web虚拟目录创建管理)
  • 12/31
  • 2008
Web服务器 | Windows 1326 次查看
  string sServer = "localhost";

  string VirtualDir = "Bug2004"; \虚拟目录

  string PathDir = @"D:myWebDirTestBug2000" \物理目录

  IISManager iisMg = new IISManager(sServer);

  iisMg.Connect();

  if (iisMg.Exists(VirtualDir]))

  {

  Console.Write(VirtualDir+ " is exist!");

  }

  else

  {

  myINI.IniWriteValue("WebDir","WebDirExist","false");

  iisMg.get_AnonymousUser();

  string[] anonymousUser = new string[2];

  anonymousUser[0] = iisMg.AnonymousUserName ;

  anonymousUser[1] = iisMg.AnonymousUserPass ;

  VirtualDirectory newVirDir = new VirtualDirectory(VirtualDir,PathDir,anonymousUser);

  if (iisMg.Create(newVirDir))

  Console.Write(VirtualDir+ " 创建成功!");

  else

  Console.Write(VirtualDir+ " 创建不成功!");

  }

  iisMg.Close();

  (二)CreateWebDir.cs 是转贴过来的,我作了些完善和修改

  ///***********************************************************

  ///************** IIS控制管理类 **************

  ///************** 转贴自: 飞刀 http://www.aspcn.com *************

  ///***********************************************************

  using System;

  using System.Data;

  using System.DirectoryServices;

  using System.Collections;

  namespace CreateWebDir

  {

  ///

  /// IISManager 的摘要说明。

  ///


  public class IISManager

  {

  //定义需要使用的

  private string _server,_website,_AnonymousUserPass,_AnonymousUserName;

  private VirtualDirectories _virdirs;

  protected System.DirectoryServices.DirectoryEntry rootfolder;

  private bool _batchflag;

  public IISManager()

  {

  //默认情况下使用localhost,即访问本地机

  _server = "localhost";

  _website = "1";

  _batchflag = false;

  }

  public IISManager(string strServer)

  {

  _server = strServer;

  _website = "1";

  _batchflag = false;

  }

  ///

  /// 定义公共属性

  ///


  public void get_AnonymousUser()

  {

  _AnonymousUserPass="IUSR_DEVE-SERVER";

  _AnonymousUserName="IUSR_DEVE-SERVER";

  VirtualDirectory vDir;

  try

  {

  Hashtable myList = (Hashtable)_virdirs;

  IDictionaryEnumerator myEnumerator = myList.GetEnumerator();

  while ( myEnumerator.MoveNext() )

  {

  vDir = (VirtualDirectory)myEnumerator.Value;

  if (vDir.AnonymousUserName!="" && vDir.AnonymousUserPass != "")

  {

  _AnonymousUserName=vDir.AnonymousUserName;

  _AnonymousUserPass=vDir.AnonymousUserPass;

  break;

  }

  }

  }

  catch

  {

  _AnonymousUserPass="IUSR_DEVE-SERVER";

  _AnonymousUserName="IUSR_DEVE-SERVER";

  }

  }

  public string AnonymousUserName

  {

  get{ return _AnonymousUserName;}

  set{ _AnonymousUserName = value;}

  }

  public string AnonymousUserPass

  {

  get{ return _AnonymousUserPass;}

  set{ _AnonymousUserPass = value;}

  }

  //Server属性定义访问机器的名字,可以是IP与计算名

  public string Server

  {

  get{ return _server;}

  set{ _server = value;}

  }

  //WebSite属性定义,为一数字,为方便,使用string

  //一般来说第一台主机为1,第二台主机为2,依次类推

  public string WebSite

  {

  get{ return _website; }

  set{ _website = value; }

  }

  //虚拟目录的名字

  public VirtualDirectories VirDirs

  {

  get{ return _virdirs; }

  set{ _virdirs = value;}

  }

  ///

  ///定义公共方法

  ///


  //连接服务器

  public void Connect()

  {

  ConnectToServer();

  }

  //为方便重载

  public void Connect(string strServer)

  {

  _server = strServer;

  ConnectToServer();

  }

  //为方便重载

  public void Connect(string strServer,string strWebSite)

  {

  _server = strServer;

  _website = strWebSite;

  ConnectToServer();

  }

  //判断是否存这个虚拟目录

  public bool Exists(string strVirdir)

  {

  return _virdirs.Contains(strVirdir);

  }

  //添加一个虚拟目录

  public bool Create(VirtualDirectory newdir)

  {

  string strPath = "IIS://" + _server + "/W3SVC/" + _website + "/ROOT/" + newdir.Name;

  if(!_virdirs.Contains(newdir.Name) || _batchflag )

  {

  try

  {

  //加入到ROOT的Children集合中去

  DirectoryEntry newVirDir = rootfolder.Children.Add(newdir.Name,"IIsWebVirtualDir");

  newVirDir.Invoke("AppCreate",true);

  newVirDir.CommitChanges();

  rootfolder.CommitChanges();

  //然后更新数据

  UpdateDirInfo(newVirDir,newdir);

  return true;

  }

  catch(Exception ee)

  {

  //throw new Exception(ee.ToString());

  return false;

  }

  }

  else

  {

  return true;

  //throw new Exception("This virtual directory is already exist.");

  }

  }

  //得到一个虚拟目录

  public VirtualDirectory GetVirDir(string strVirdir)

  {

  VirtualDirectory tmp = null;

  if(_virdirs.Contains(strVirdir))

  {

  tmp = _virdirs.Find(strVirdir);

  ((VirtualDirectory)_virdirs[strVirdir]).flag = 2;

  }

  else

  {

  //throw new Exception("This virtual directory is not exists");

  }

  return tmp;

  }

  //更新一个虚拟目录

  public void Update(VirtualDirectory dir)

  {

  //判断需要更改的虚拟目录是否存在

  if(_virdirs.Contains(dir.Name))

  {

  DirectoryEntry ode = rootfolder.Children.Find(dir.Name,"IIsWebVirtualDir");

  UpdateDirInfo(ode,dir);

  }

  else

  {

  //throw new Exception("This virtual directory is not exists.");

  }

  }

  //删除一个虚拟目录

  public void Delete(string strVirdir)

  {

  if(_virdirs.Contains(strVirdir))

  {

  object[] paras = new object[2];

  paras[0] = "IIsWebVirtualDir"; //表示操作的是虚拟目录

  paras[1] = strVirdir;

  rootfolder.Invoke("Delete",paras);

  rootfolder.CommitChanges();

  }

  else

  {

  //throw new Exception("Can''t delete " + strVirdir + ",because it isn''t exists.");

  }

  }

  //批量更新

  public void UpdateBatch()

  {

  BatchUpdate(_virdirs);

  }

  //重载一个:-)

  public void UpdateBatch(VirtualDirectories vds)

  {

  BatchUpdate(vds);

  }

  ///

  ///私有方法

  ///


  public void Close()

  {

  _virdirs.Clear();

  _virdirs = null;

  rootfolder.Dispose();

  }

  //连接服务器

  private void ConnectToServer()

  {

  string strPath = "IIS://" + _server + "/W3SVC/" + _website +"/ROOT";

  try

  {

  this.rootfolder = new DirectoryEntry(strPath);

  _virdirs = GetVirDirs(this.rootfolder.Children);

  }

  catch(Exception e)

  {

  //throw new Exception("Can''t connect to the server ["+ _server +"] ...",e);

  }

  }

  //执行批量更新

  private void BatchUpdate(VirtualDirectories vds)

  {

  _batchflag = true;

  foreach(object item in vds.Values)

  {

  VirtualDirectory vd = (VirtualDirectory)item;

  switch(vd.flag)

  {

  case 0:

  break;

  case 1:

  Create(vd);

  break;

  case 2:

  Update(vd);

  break;

  }

  }

  _batchflag = false;

  }

  //更新东东

  private void UpdateDirInfo(DirectoryEntry de,VirtualDirectory vd)

  {

  de.Properties["AnonymousUserName"][0] = vd.AnonymousUserName;

  de.Properties["AnonymousUs