IIS管理类(C#)

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

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

///************** Author: 飞刀 ************** 

///************** http://www.aspcn.com ************** 

///************** feidao@aspcn.com ************** 

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


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 



getreturn _server;} 

set{ _server = value;} 

}
 

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

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

public string WebSite 



getreturn _website; } 

set{ _website = value; } 

}
 



//虚拟目录的名字 

public VirtualDirectories VirDirs 



getreturn _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=""

}
 

///<summary> 

///定义属性,IISVirtualDir太多属性了 

///我只搞了比较重要的一些,其它的大伙需要的自个加吧。 

///</summary> 




public int flag 



getreturn _flag;} 

set{ _flag = value;} 

}
 

public bool AccessRead 



getreturn _read;} 

set{ _read = value;} 

}
 

public bool AccessWrite 



getreturn _write;} 

set{ _write = value;} 

}
 

public bool AccessExecute 



getreturn _execute;} 

set{ _execute = value;} 

}
 

public bool AccessSSL 



getreturn _ssl;} 

set{ _ssl = value;} 

}
 

public bool AccessScript 



getreturn _script;} 

set{ _script = value;} 

}
 

public bool AuthBasic 



getreturn _authbasic;} 

set{ _authbasic = value;} 

}
 

public bool AuthNTLM 



getreturn _authntlm;} 

set{ _authntlm = value;} 

}
 

public bool ContentIndexed 



getreturn _indexed;} 

set{ _indexed = value;} 

}
 

public bool EnableDirBrowsing 



getreturn _endirbrow;} 

set{ _endirbrow = value;} 

}
 

public bool EnableDefaultDoc 



getreturn _endefaultdoc;} 

set{ _endefaultdoc = value;} 

}
 

public string Name 



getreturn _name;} 

set{ _name = value;} 

}
 

public string Path 



getreturn _path;} 

set{ _path = value;} 

}
 

public string DefaultDoc 



getreturn _defaultdoc;} 

set{ _defaultdoc = value;} 

}
 

public string AnonymousUserName 



getreturn _ausername;} 

set{ _ausername = value;} 

}
 

public string AnonymousUserPass 



getreturn _auserpass;} 

set{ _auserpass = value;} 

}
 

}
 

/// <summary> 

/// 集合VirtualDirectories 

/// </summary> 




public class VirtualDirectories : System.Collections.Hashtable 



public VirtualDirectories() 



}
 

//添加新的方法 

public VirtualDirectory Find(string strName) 



return (VirtualDirectory)this[strName]; 

}
 

}
 

}
 
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值