注册
 找回密码
 注册
江西广告网
查看: 389|回复: 0
打印 上一主题 下一主题

IIS控制管理(Web虚拟目录创建管理)

[复制链接]

该用户从未签到

1
跳转到指定楼层
发表于 2009-1-5 09:02:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册

x
  string sServer = "localhost";   string VirtualDir = "Bug2004"; \\虚拟目录   string PathDir = @"D:\myWebDirTest\Bug2000" \\物理目录      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 <
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表