代码语言
.
CSharp
.
JS
Java
Asp.Net
C
MSSQL
PHP
Css
PLSQL
Python
Shell
EBS
ASP
Perl
ObjC
VB.Net
VBS
MYSQL
GO
Delphi
AS
DB2
Domino
Rails
ActionScript
Scala
代码分类
文件
系统
字符串
数据库
网络相关
图形/GUI
多媒体
算法
游戏
Jquery
Extjs
Android
HTML5
菜单
网页交互
WinForm
控件
企业应用
安全与加密
脚本/批处理
开放平台
其它
【
CSharp
】
WINFORM IIS管理类
作者:
Dezai.CN
/ 发布于
2011/9/14
/
683
<div>using System; using System.Data; using System.DirectoryServices; using System.Collections; namespace IISManage{ /// <summary> /// <strong style="background-color: #ff9999; color: black">IIS</strong><a name="baidusnap2"></a><strong style="background-color: #99ff99; color: black">管理</strong>类,可以实现创建站点、虚拟目录,删除虚拟目录等 /// </summary> public class IISManager { private string _server,_website,_AnonymousUserPass,_AnonymousUserName; private VirtualDirectories _virdirs; protected System.DirectoryServices.DirectoryEntry rootfolder; private bool _batchflag; #region 构造函数 /// <summary> /// 构造函数 /// </summary> public IISManager() { //默认情况下使用localhost,即访问本地机 _server = "localhost"; _website = "1"; _batchflag = false; } /// <summary> /// 构造函数 /// </summary> /// <param >服务器</param> public IISManager(string strServer) { _server = strServer; _website = "1"; _batchflag = false; } /// <summary> /// 构造函数 /// </summary> /// <param >服务器</param> /// <param >站点,每一个站点为1,第二个站点为2,依此类推</param> public IISManager(string strServer,int website) { _server = strServer; _website = website.ToString(); _batchflag = false; } #endregion #region 定义公共属性 /// <summary> /// 匿名访问用户 /// </summary> public string AnonymousUserName { get{ return _AnonymousUserName; } set{ _AnonymousUserName = value; } } /// <summary> /// 匿名访问用户密码 /// </summary> public string AnonymousUserPass { get{ return _AnonymousUserPass; } set{ _AnonymousUserPass = value; } } /// <summary> /// 服务器,可以是IP或计算名 /// </summary> public string Server { get{ return _server; } set{ _server = value; } } /// <summary> /// 站点,一般来说第一台主机为1,第二台主机为2,依次类推 /// </summary> public int WebSite { get{ return Convert.ToInt32(_website); } set{ _website = Convert.ToString(value); } } /// <summary> /// 虚拟目录的名字 /// </summary> public VirtualDirectories VirDirs { get{ return _virdirs; } set{ _virdirs = value; } } #endregion #region 定义公共方法 /// <summary> /// 获取匿名访问用户的用户名和密码 /// </summary> 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"; } } /// <summary> /// 连接服务器 /// </summary> public void Connect() { ConnectToServer(); } /// <summary> /// 连接服务器 /// </summary> /// <param >服务器名称</param> public void Connect(string strServer) { _server = strServer; ConnectToServer(); } /// <summary> /// 连接服务器 /// </summary> /// <param >服务器名称</param> /// <param >站点,一般来说第一台主机为1,第二台主机为2,依次类推</param> public void Connect(string strServer,string strWebSite) { _server = strServer; _website = strWebSite; ConnectToServer(); } /// <summary> /// 添加一个站点 /// </summary> /// <param >站点的路径</param> public void CreateWebSite(string webSiteName,string port,string path) { try { DirectoryEntry root = new DirectoryEntry("<strong style="background-color: #ff9999; color: black">IIS</strong>://"+this._server+"/W3SVC"); int siteID = 1; foreach(DirectoryEntry e in root.Children) { if(e.SchemaClassName == "IIsWebServer") { int if(ID >= siteID){siteID = ID+1;} if(e.Properties["ServerBindings"][0].ToString() == ":"+port+":") { throw new Exception(port+"已被占用,请选择其它端口!"); } } } DirectoryEntry site = (DirectoryEntry)root.Invoke("Create", "IIsWebServer", siteID); site.Invoke("Put", "ServerComment", webSiteName); site.Invoke("Put", "KeyType", "IIsWebServer"); site.Invoke("Put", "ServerBindings", ":"+port+":"); site.Invoke("Put", "ServerState", 2); site.Invoke("Put", "FrontPageWeb", 1); site.Invoke("Put", "DefaultDoc", "index.aspx"); site.Invoke("Put", "SecureBindings", ":443:"); site.Invoke("Put", "ServerAutoStart", 1); site.Invoke("Put", "ServerSize", 1); site.Invoke("SetInfo"); DirectoryEntry siteVDir = site.Children.Add("Root", "IISWebVirtualDir"); siteVDir.Properties["AppIsolated"][0] = 2; siteVDir.Properties["Path"][0] = path; siteVDir.Properties["AccessFlags"][0] = 513; siteVDir.Properties["FrontPageWeb"][0] = 1; //siteVDir.Properties["AppRoot"][0] = "LM/W3SVC/"+siteID+"/Root"; siteVDir.Properties["AppFriendlyName"][0] = "ROOT"; siteVDir.CommitChanges(); site.CommitChanges(); } catch(Exception ex) { throw ex; } } /// <summary> /// 取得所有站点 /// </summary> /// <returns></returns> public System.Collections.Hashtable getSites() { try { DirectoryEntry root = new DirectoryEntry("<strong style="background-color: #ff9999; color: black">IIS</strong>://"+this._server+"/W3SVC"); Hashtable sites = new Hashtable(); foreach(DirectoryEntry e in root.Children) { if(e.SchemaClassName == "IIsWebServer") { sites.Add(e.Name,e); } } return sites; } catch(Exception ex) { throw ex; } } /// <summary> /// 判断是否存这个虚拟目录 /// </summary> /// <param >虚拟目录名称</param> /// <returns></returns> public bool Exists(string strVirdir) { return _virdirs.Contains(strVirdir); } /// <summary> /// 添加一个虚拟目录 /// </summary> /// <param >虚拟目录</param> /// <returns></returns> public bool CreateVirtualDirectory(VirtualDirectory newdir) { string strPath = "<strong style="background-color: #ff9999; color: black">IIS</strong>://" + _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) { return false; } } else { return false; } } /// <summary> /// 得到一个虚拟目录 /// </summary> /// <param >虚拟目录名</param> /// <returns></returns> 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("虚拟目录"+strVirdir+"不存在!"); } return tmp; } /// <summary> /// 更新一个虚拟目录 /// </summary> /// <param >虚拟目录</param> public void Update(VirtualDirectory dir) { //判断需要更改的虚拟目录是否存在 if(_virdirs.Contains(dir.Name)) { DirectoryEntry ode = rootfolder.Children.Find(dir.Name,"IIsWebVirtualDir"); UpdateDirInfo(ode,dir); } else { System.Windows.Forms.MessageBox.Show("虚拟目录"+dir.Name+"不存在!"); } } /// <summary> /// 删除一个虚拟目录 /// </summary> /// <param >虚拟目录名</param> 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 { System.Windows.Forms.MessageBox.Show("虚拟目录"+strVirdir+"不存在!"); } } /// <summary> /// 批量更新 /// </summary> public void UpdateBatch() { BatchUpdate(_virdirs); } /// <summary> /// 批量更新 /// </summary> /// <param >虚拟目录集合</param> public void UpdateBatch(VirtualDirectories vds) { BatchUpdate(vds); } /// <summary> /// 获取虚拟目录集合 /// </summary> /// <returns></returns> public VirtualDirectories GetVirtualDirdctories() { VirtualDirectories vds = GetVirDirs(this.rootfolder.Children); return vds; } #endregion #region 私有方法 /// <summary> /// 关闭当前对象 /// </summary> public void Close() { _virdirs.Clear(); _virdirs = null; rootfolder.Dispose(); } /// <summary> /// 连接服务器 /// </summary> private void ConnectToServer() { string strPath = "<strong style="background-color: #ff9999; color: black">IIS</strong>://" + _server + "/W3SVC/" + _website +"/ROOT"; try { this.rootfolder = new DirectoryEntry(strPath); _virdirs = GetVirDirs(this.rootfolder.Children); } catch(Exception) { System.Windows.Forms.MessageBox.Show("无法连接到服务器:"+_server); } } /// <summary> /// 执行批量更新 /// </summary> /// <param >虚拟目录集合</param> 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: CreateVirtualDirectory(vd); break; case 2: Update(vd); break; } } _batchflag = false; } /// <summary> /// 更新指定虚拟目录 /// </summary> /// <param ></param> /// <param >要执行更新的虚拟目录</param> 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(); } /// <summary> /// 获取虚拟目录集合 /// </summary> /// <param ></param> /// <returns></returns> 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; } #endregion } /// <summary> /// 虚拟目录实体 /// </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; #region 构造函数 /// <summary> /// 构造函数 /// </summary> public VirtualDirectory() { Setvalue(); } /// <summary> /// 构造函数 /// </summary> /// <param >虚拟目录名</param> public VirtualDirectory(string sVirDirName) { Setvalue(); _name = sVirDirName; } /// <summary> /// 构造函数 /// </summary> /// <param >虚拟目录名</param> /// <param >物理路径</param> /// <param ></param> public VirtualDirectory(string sVirDirName,string strPhyPath,string[] AnonymousUser) { Setvalue(); _name = sVirDirName; _path = strPhyPath; _ausername = AnonymousUser[0]; _auserpass = AnonymousUser[1]; } #endregion /// <summary> /// 设置虚拟目录的属性 /// </summary> private void Setvalue() { _read = true; _execute = false; _script = true; _ssl= false; _write=false; _authbasic=false; _authntlm=true; _indexed = true; _endirbrow=false; _endefaultdoc = true; _flag = 1; _defaultdoc = "index.aspx"; _path = "C: "; _ausername = "IUSR_DEVE-SERVER"; _auserpass ="IUSR_DEVE-SERVER"; _name=""; } public override string ToString() { return this._name; } #region 定义属性 public int flag { get{ return _flag; } set{ _flag = value; } } public bool AccessRead { get{ return _read; } set{ _read = value; } } public bool AccessWrite { get{ return _write; } set{ _write = value; } } public bool AccessExecute { get{ return _execute; } set{ _execute = value; } } public bool AccessSSL { get{ return _ssl; } set{ _ssl = value; } } public bool Accessscript { get{ return _script; } set{ _script = value; } } public bool AuthBasic { get{ return _authbasic; } set{ _authbasic = value; } } public bool AuthNTLM { get{ return _authntlm; } set{ _authntlm = value; } } public bool ContentIndexed { get{ return _indexed; } set{ _indexed = value; } } public bool EnableDirBrowsing { get{ return _endirbrow; } set{ _endirbrow = value; } } public bool EnableDefaultDoc { get{ return _endefaultdoc; } set{ _endefaultdoc = value; } } public string Name { get{ return _name; } set{ _name = value; } } public string Path { get{ return _path; } set{ _path = value; } } public string DefaultDoc { get{ return _defaultdoc; } set{ _defaultdoc = value; } } public string AnonymousUserName { get{ return _ausername; } set{ _ausername = value; } } public string AnonymousUserPass { get{ return _auserpass; } set{ _auserpass = value; } } #endregion } /// <summary> /// 虚拟目录集合类 /// </summary> public class VirtualDirectories : System.Collections.Hashtable { public VirtualDirectories() { } /// <summary> /// 搜索指定的虚拟目录 /// </summary> /// <param >虚拟目录名</param> /// <returns></returns> public VirtualDirectory Find(string strName) { return (VirtualDirectory)this[strName]; } } } </div>
试试其它关键字
IIS管理类
同语言下
.
文件IO 操作类库
.
Check图片类型[JPEG(.jpg 、.jpeg),TIF,GIF,BMP,PNG,P
.
机器名和IP取得(IPV4 IPV6)
.
Tiff转换Bitmap
.
linqHelper
.
MadieHelper.cs
.
RegHelper.cs
.
如果关闭一个窗体后激活另一个窗体的事件或方法
.
创建日志通用类
.
串口辅助开发类
可能有用的
.
C#实现的html内容截取
.
List 切割成几份 工具类
.
SQL查询 多列合并成一行用逗号隔开
.
一行一行读取txt的内容
.
C#动态修改文件夹名称(FSO实现,不移动文件)
.
c# 移动文件或文件夹
.
c#图片添加水印
.
Java PDF转换成图片并输出给前台展示
.
网站后台修改图片尺寸代码
.
处理大图片在缩略图时的展示
Dezai.CN
贡献的其它代码
(
4037
)
.
多线程Socket服务器模块
.
生成随机密码
.
清除浮动样式
.
弹出窗口居中
.
抓取url的函数
.
使用base HTTP验证
.
div模拟iframe嵌入效果
.
通过header转向的方法
.
Session操作类
.
执行sqlite输入插入操作后获得自动编号的ID
Copyright © 2004 - 2024 dezai.cn. All Rights Reserved
站长博客
粤ICP备13059550号-3