c# 操作 IIS

给你提供点资料(转):  
  [--IIS控制管理类--]  
  using   System;  
  using   System.Data;  
  using   System.DirectoryServices;  
  using   System.Collections;  
  namespace   Aspcn.Management  
  {  
  ///   <summary>  
  ///   IISManager   的摘要说明。  
  ///   </summary>  
  public   class   IISManager  
  {  
  //定义需要使用的  
  private   string   _server,_website;  
  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;  
  }  
  ///   <summary>  
  ///   定义公共属性  
  ///   </summary>  
   
  //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;}  
  }  
  ///<summary>  
  ///定义公共方法  
  ///</summary>  
   
  //连接服务器  
  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   void   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);  
  }  
  catch(Exception   ee)  
  {  
  throw   new   Exception(ee.ToString());  
  }  
  }  
  else  
  {  
  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);  
  }  
     
  ///<summary>  
  ///私有方法  
  ///</summary>  
   
  //连接服务器  
  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["AnonymousUserPass"][0]   =   vd.AnonymousUserPass;  
  de.Properties["AccessRead"][0]   =   vd.AccessRead;  
  de.Properties["AccessExecute"][0]   =   vd.AccessExecute;  
  de.Properties["AccessWrite"][0]   =   vd.AccessWrite;  
  de.Properties["AuthBasic"][0]   =   vd.AuthBasic;  
  de.Properties["AuthNTLM"][0]   =   vd.AuthNTLM;  
  de.Properties["ContentIndexed"][0]   =   vd.ContentIndexed;  
  de.Properties["EnableDefaultDoc"][0]   =   vd.EnableDefaultDoc;  
  de.Properties["EnableDirBrowsing"][0]   =   vd.EnableDirBrowsing;  
  de.Properties["AccessSSL"][0]   =   vd.AccessSSL;  
  de.Properties["AccessScript"][0]   =   vd.AccessScript;  
  de.Properties["DefaultDoc"][0]   =   vd.DefaultDoc;  
  de.Properties["Path"][0]   =   vd.Path;  
  de.CommitChanges();  
  }  
   
  //获取虚拟目录集合  
  private   VirtualDirectories   GetVirDirs(DirectoryEntries   des)  
  {  
  VirtualDirectories   tmpdirs   =   new   VirtualDirectories();  
  foreach(DirectoryEntry   de   in   des)  
  {  
  if(de.SchemaClassName   ==   "IIsWebVirtualDir")  
  {  
  VirtualDirectory   vd   =   new   VirtualDirectory();  
  vd.Name   =   de.Name;  
  vd.AccessRead   =   (bool)de.Properties["AccessRead"][0];  
  vd.AccessExecute   =   (bool)de.Properties["AccessExecute"][0];  
  vd.AccessWrite   =   (bool)de.Properties["AccessWrite"][0];  
  vd.AnonymousUserName   =   (string)de.Properties["AnonymousUserName"][0];  
  vd.AnonymousUserPass   =   (string)de.Properties["AnonymousUserName"][0];  
  vd.AuthBasic   =   (bool)de.Properties["AuthBasic"][0];  
  vd.AuthNTLM   =   (bool)de.Properties["AuthNTLM"][0];  
  vd.ContentIndexed   =   (bool)de.Properties["ContentIndexed"][0];  
  vd.EnableDefaultDoc   =   (bool)de.Properties["EnableDefaultDoc"][0];  
  vd.EnableDirBrowsing   =   (bool)de.Properties["EnableDirBrowsing"][0];  
  vd.AccessSSL   =   (bool)de.Properties["AccessSSL"][0];  
  vd.AccessScript   =   (bool)de.Properties["AccessScript"][0];  
  vd.Path   =   (string)de.Properties["Path"][0];  
  vd.flag   =   0;  
  vd.DefaultDoc   =   (string)de.Properties["DefaultDoc"][0];  
  tmpdirs.Add(vd.Name,vd);  
  }  
  }  
  return   tmpdirs;  
  }  
   
  }  
  ///   <summary>  
  ///   VirtualDirectory类  
  ///   </summary>  
  public   class   VirtualDirectory  
  {  
  private   bool   _read,_execute,_script,_ssl,_write,_authbasic,_authntlm,_indexed,_endirbrow,_endefaultdoc;  
  private   string   _ausername,_auserpass,_name,_path;  
  private   int   _flag;  
  private   string   _defaultdoc;  
  ///   <summary>  
  ///   构造函数  
  ///   </summary>  
  public   VirtualDirectory()  
  {  
  SetValue();  
  }  
  public   VirtualDirectory(string   strVirDirName)  
  {  
  _name   =   strVirDirName;  
  SetValue();  
  }  
  private   void   SetValue()  
  {  
  _read   =   true;_execute   =   false;_script   =   false;_ssl=   false;_write=false;_authbasic=false;_authntlm=false;  
  _indexed   =   false;_endirbrow=false;_endefaultdoc   =   false;  
  _flag   =   1;  
  _defaultdoc   =   "default.htm,default.aspx,default.asp,index.htm";  
  _path   =   "C://";  
  _ausername   =   "";_auserpass   ="";_name="";  
  } 

 

public   void   HostNameEdit(ArrayList   HostName,string   SiteId)  
  {  
   
  DirectoryEntry   w3svc1   =   new   DirectoryEntry("IIS://localhost/w3svc/"+SiteId,"localhost//administrator","<Administrative_Password>",AuthenticationTypes.Secure);  
  PropertyValueCollection   Thostnames   =   w3svc1.Properties["ServerBindings"];  
  Thostnames.Clear();  
  for(int   i=0;i<HostName.Count;i++)  
  {  
    Thostnames.Add(HostName[i].ToString());  
  }  
  w3svc1.CommitChanges();  
  }  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值