亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

用C#操縱IIS(代碼)

2020-01-24 03:50:49
字體:
來源:轉載
供稿:網友

using System; 
using System.DirectoryServices; 
using System.Collections; 
using System.Text.RegularExpressions; 
using System.Text; 
/** 
 * @author 吳海燕 
 * @email  wuhy80-usual@yahoo.com 
 * 2004-6-25 第一版 
 */  
namespace Wuhy.ToolBox 

     /// <summary> 
     ///  這個類是靜態類。用來實現管理IIS的基本操作。 
     ///  管理IIS有兩種方式,一是ADSI,一是WMI。由于系統限制的原因,只好選擇使用ADSI實現功能。 
     ///  這是一個遺憾。只有等到只有使用IIS 6的時候,才有可能使用WMI來管理系統 
     ///  不過有一個問題就是,我現在也覺得這樣的一個方法在本地執行會比較的好。最好不要遠程執行。 
     ///  因為那樣需要占用相當數量的帶寬,即使要遠程執行,也是推薦在同一個網段里面執行 
     /// </summary> 
     public class IISAdminLib 
     { 
          #region UserName,Password,HostName的定義 
         public static string HostName 
         { 
              get 
              { 
                   return hostName; 
              } 
              set 
              { 
                   hostName = value; 
              } 
         } 
         public static string UserName 
         { 
              get 
              { 
                   return userName; 
              } 
              set 
              { 
                   userName = value; 
              } 
         } 
         public static string Password 
         { 
              get 
              { 
                   return password; 
              } 
              set 
              { 
                   if(UserName.Length <= 1) 
                   { 
                       throw new ArgumentException("還沒有指定好用戶名。請先指定用戶名"); 
                   } 
                   password = value; 
              } 
         } 
         public static void RemoteConfig(string hostName, string userName, string password) 
         { 
              HostName = hostName; 
              UserName = userName; 
              Password = password; 
         } 
          private static string hostName = "localhost"; 
          private static string userName; 
          private static string password; 
          #endregion 
          #region 根據路徑構造Entry的方法 
         /// <summary> 
         ///  根據是否有用戶名來判斷是否是遠程服務器。 
         ///  然后再構造出不同的DirectoryEntry出來 
         /// </summary> 
         /// <param name="entPath">DirectoryEntry的路徑</param> 
         /// <returns>返回的是DirectoryEntry實例</returns> 
         public static DirectoryEntry GetDirectoryEntry(string entPath) 
         { 
              DirectoryEntry ent; 
              if(UserName == null) 
              { 
                   ent = new DirectoryEntry(entPath); 
              } 
              else 
              { 
                   //    ent = new DirectoryEntry(entPath, HostName+"http://"+UserName, Password, AuthenticationTypes.Secure); 
                   ent = new DirectoryEntry(entPath, UserName, Password, AuthenticationTypes.Secure); 
              } 
              return ent; 
         } 
          #endregion 
          #region 添加,刪除網站的方法 
         /// <summary> 
         ///  創建一個新的網站。根據傳過來的信息進行配置 
         /// </summary> 
         /// <param name="siteInfo">存儲的是新網站的信息</param> 
         public static void CreateNewWebSite(NewWebSiteInfo siteInfo) 
         { 
              if(! EnsureNewSiteEnavaible(siteInfo.BindString)) 
              { 
                   throw new DuplicatedWebSiteException("已經有了這樣的網站了。" + Environment.NewLine + siteInfo.BindString); 
              } 
              string entPath = String.Format("IIS://{0}/w3svc", HostName); 
              DirectoryEntry rootEntry = GetDirectoryEntry(entPath); 
              string newSiteNum = GetNewWebSiteID(); 
              DirectoryEntry newSiteEntry = rootEntry.Children.Add(newSiteNum, "IIsWebServer"); 
              newSiteEntry.CommitChanges(); 
              newSiteEntry.Properties["ServerBindings"].Value = siteInfo.BindString; 
              newSiteEntry.Properties["ServerComment"].Value = siteInfo.CommentOfWebSite; 
              newSiteEntry.CommitChanges(); 
              DirectoryEntry vdEntry = newSiteEntry.Children.Add("root", "IIsWebVirtualDir"); 
              vdEntry.CommitChanges(); 
              vdEntry.Properties["Path"].Value = siteInfo.WebPath; 
              vdEntry.CommitChanges(); 
         } 
         /// <summary> 
         ///  刪除一個網站。根據網站名稱刪除。 
         /// </summary> 
         /// <param name="siteName">網站名稱</param> 
         public static void DeleteWebSiteByName(string siteName) 
         { 
              string siteNum = GetWebSiteNum(siteName); 
              string siteEntPath = String.Format("IIS://{0}/w3svc/{1}", HostName, siteNum); 
              DirectoryEntry siteEntry = GetDirectoryEntry(siteEntPath); 
              string rootPath = String.Format("IIS://{0}/w3svc", HostName); 
              DirectoryEntry rootEntry = GetDirectoryEntry(rootPath); 
              rootEntry.Children.Remove(siteEntry); 
              rootEntry.CommitChanges(); 
         } 
          #endregion 
          #region Start和Stop網站的方法 
         public static void StartWebSite(string siteName) 
         { 
              string siteNum = GetWebSiteNum(siteName); 
              string siteEntPath = String.Format("IIS://{0}/w3svc/{1}", HostName, siteNum); 
              DirectoryEntry siteEntry = GetDirectoryEntry(siteEntPath); 
              siteEntry.Invoke("Start", new object[] {}); 
         } 
         public static void StopWebSite(string siteName) 
         { 
              string siteNum = GetWebSiteNum(siteName); 
              string siteEntPath = String.Format("IIS://{0}/w3svc/{1}", HostName, siteNum); 
              DirectoryEntry siteEntry = GetDirectoryEntry(siteEntPath); 
              siteEntry.Invoke("Stop", new object[] {}); 
         } 
          #endregion 
          #region 確認網站是否相同 
         /// <summary> 
         ///  確定一個新的網站與現有的網站沒有相同的。 
         ///  這樣防止將非法的數據存放到IIS里面去 
         /// </summary> 
         /// <param name="bindStr">網站邦定信息</param> 
         /// <returns>真為可以創建,假為不可以創建</returns> 
         public static bool EnsureNewSiteEnavaible(string bindStr) 
         { 
              string entPath = String.Format("IIS://{0}/w3svc", HostName); 
              DirectoryEntry ent = GetDirectoryEntry(entPath); 
              foreach(DirectoryEntry child in ent.Children) 
              { 
                   if(child.SchemaClassName == "IIsWebServer") 
                   { 
                        if(child.Properties["ServerBindings"].Value != null) 
                       { 
                            if(child.Properties["ServerBindings"].Value.ToString() == bindStr) 
                            { 
                                 return false; 
                            } 
                       } 
                   } 
              } 
              return true; 
         } 
          #endregion 
          #region 獲取一個網站編號的方法 
         /// <summary> 
         ///  獲取一個網站的編號。根據網站的ServerBindings或者ServerComment來確定網站編號 
         /// </summary> 
         /// <param name="siteName"></param> 
         /// <returns>返回網站的編號</returns> 
         /// <exception cref="NotFoundWebSiteException">表示沒有找到網站</exception> 
         public static string GetWebSiteNum(string siteName) 
         { 
              Regex regex = new Regex(siteName); 
              string tmpStr; 
              string entPath = String.Format("IIS://{0}/w3svc", HostName); 
              DirectoryEntry ent = GetDirectoryEntry(entPath); 
              foreach(DirectoryEntry child in ent.Children) 
              { 
                   if(child.SchemaClassName == "IIsWebServer") 
                   { 
                        if(child.Properties["ServerBindings"].Value != null) 
                       { 
                            tmpStr = child.Properties["ServerBindings"].Value.ToString(); 
                            if(regex.Match(tmpStr).Success) 
                            { 
                                 return child.Name; 
                            } 
                       } 
                        if(child.Properties["ServerComment"].Value != null) 
                       { 
                            tmpStr = child.Properties["ServerComment"].Value.ToString(); 
                            if(regex.Match(tmpStr).Success) 
                            { 
                                 return child.Name; 
                            } 
                       } 
                   } 
              } 
              throw new NotFoundWebSiteException("沒有找到我們想要的站點" + siteName); 
         } 
          #endregion 
          #region 獲取新網站id的方法 
         /// <summary> 
         ///  獲取網站系統里面可以使用的最小的ID。 
         ///  這是因為每個網站都需要有一個唯一的編號,而且這個編號越小越好。 
         ///  這里面的算法經過了測試是沒有問題的。 
         /// </summary> 
         /// <returns>最小的id</returns> 
         public static string GetNewWebSiteID() 
         { 
              ArrayList list = new ArrayList(); 
              string tmpStr; 
              string entPath = String.Format("IIS://{0}/w3svc", HostName); 
              DirectoryEntry ent = GetDirectoryEntry(entPath); 
              foreach(DirectoryEntry child in ent.Children) 
              { 
                   if(child.SchemaClassName == "IIsWebServer") 
                   { 
                       tmpStr = child.Name.ToString(); 
                        list.Add(Convert.ToInt32(tmpStr)); 
                   } 
              } 
              list.Sort(); 
              int i = 1; 
              foreach(int j in list) 
              { 
                   if(i == j) 
                   { 
                       i++; 
                   } 
              } 
              return i.ToString(); 
         } 
          #endregion 
     } 
     #region 新網站信息結構體 
     public struct NewWebSiteInfo 
     { 
          private string hostIP;   // The Hosts IP Address 
          private string portNum;   // The New Web Sites Port.generally is "80" 
          private string descOfWebSite; // 網站表示。一般為網站的網站名。例如"www.dns.com.cn" 
          private string commentOfWebSite;// 網站注釋。一般也為網站的網站名。 
          private string webPath;   // 網站的主目錄。例如"e:/tmp" 
         public NewWebSiteInfo(string hostIP, string portNum, string descOfWebSite, string commentOfWebSite, string webPath) 
         { 
              this.hostIP = hostIP; 
              this.portNum = portNum; 
              this.descOfWebSite = descOfWebSite; 
              this.commentOfWebSite = commentOfWebSite; 
              this.webPath = webPath; 
         } 
         public string BindString 
         { 
              get 
              { 
                   return String.Format("{0}:{1}:{2}", hostIP, portNum, descOfWebSite); 
              } 
         } 
         public string CommentOfWebSite 
         { 
              get 
              { 
                   return commentOfWebSite; 
              } 
         } 
         public string WebPath 
         { 
              get 
              { 
                   return webPath; 
              } 
         } 
     } 
     #endregion 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久久久国产精品免费网站| 中文字幕久久久av一区| 在线日韩日本国产亚洲| 日韩国产高清污视频在线观看| 国内偷自视频区视频综合| 中文字幕欧美日韩精品| 日韩欧美一区二区三区| 欧美极品美女电影一区| 亚洲欧美精品中文字幕在线| 日韩在线激情视频| 色综合久久88| 欧美日韩另类视频| 欧美最顶级丰满的aⅴ艳星| 欧美一区二区.| 亚洲国产精品999| 一区二区三区视频观看| 亚洲欧美日韩久久久久久| 亚洲国产私拍精品国模在线观看| 亚洲第一视频网站| 亚洲国产91精品在线观看| 日韩美女av在线| 国产日韩欧美在线看| 日韩a**站在线观看| 国产精品国产福利国产秒拍| 91在线网站视频| 青草青草久热精品视频在线观看| 亚洲欧美国产一本综合首页| 久久久99免费视频| 久久精品美女视频网站| 国产精品午夜国产小视频| 日本成人精品在线| 91九色综合久久| 国产美女精品视频免费观看| 国产精品一区二区三区久久久| 欧美成人精品影院| 欧美日韩成人在线视频| 亚洲精品二三区| 亚洲丁香久久久| 亚洲美女免费精品视频在线观看| 成人国产亚洲精品a区天堂华泰| 亚洲国产精品久久久| 国产日韩在线免费| 九九热精品视频在线播放| 午夜精品久久17c| 国产精品免费久久久久影院| 欧美大片va欧美在线播放| 欧美成人h版在线观看| 性欧美暴力猛交69hd| 久久九九亚洲综合| 欧美在线视频免费观看| 欧美午夜精品久久久久久浪潮| 97免费中文视频在线观看| 久久久久一本一区二区青青蜜月| 久久久久久91香蕉国产| 亚洲二区中文字幕| 国产欧美在线视频| 久久久久国产视频| 伊人精品在线观看| 美女国内精品自产拍在线播放| 久久精品一区中文字幕| 久久久久久有精品国产| 日韩中文字幕av| 亚洲无限av看| 岛国av一区二区三区| 动漫精品一区二区| 精品性高朝久久久久久久| 中文字幕9999| 欧美极品少妇全裸体| 成人亲热视频网站| 欧美裸体视频网站| 粗暴蹂躏中文一区二区三区| 亚洲成人久久电影| 欧美中文在线字幕| 亚洲乱码一区二区| 国产精品久久一区主播| 欧美夫妻性视频| 国产视频一区在线| 尤物tv国产一区| 一个人看的www久久| 国语自产精品视频在线看一大j8| 欧美日韩在线免费观看| 久久久久久午夜| 亚洲第一视频网站| 亚洲精品一区二区久| 91免费人成网站在线观看18| 色综合色综合网色综合| 成人性生交大片免费看小说| 97在线观看视频国产| 69国产精品成人在线播放| 亚洲成人黄色网址| 成人做爰www免费看视频网站| 日韩激情第一页| 91免费福利视频| 成人在线观看视频网站| 午夜精品久久久久久久久久久久| 亚洲国产日韩精品在线| 欧美激情三级免费| 国内精品视频久久| 亚洲精品理论电影| 国产成人拍精品视频午夜网站| 国产成人自拍视频在线观看| 91精品美女在线| 国产欧美精品日韩精品| 久久久精品久久久| 91禁国产网站| 中文字幕在线看视频国产欧美在线看完整| 欧美中文在线字幕| 久久视频在线看| 成人亚洲综合色就1024| 欧美性猛交xxxx黑人猛交| 成人福利网站在线观看11| 久久久中文字幕| 欧美激情一区二区三区成人| 亚洲成人黄色网| 亚洲国产91精品在线观看| 欧美wwwxxxx| 亚洲国产精品悠悠久久琪琪| 亚洲日韩中文字幕| 亚洲天堂2020| 亚洲一区二区三区视频| 国产精品情侣自拍| 久久青草精品视频免费观看| 午夜精品一区二区三区av| 亚洲精品www久久久久久广东| 亚洲天堂成人在线视频| 中文字幕亚洲天堂| 国产欧美精品在线播放| 91最新在线免费观看| 91成人国产在线观看| 欧美性猛交xxxx乱大交蜜桃| 91亚洲精品久久久久久久久久久久| 亚洲国产精久久久久久| 97视频在线观看播放| 国产精品日韩电影| 国产一区视频在线| 狠狠色噜噜狠狠狠狠97| 日本国产一区二区三区| 大伊人狠狠躁夜夜躁av一区| 亚洲小视频在线观看| 国产精品夫妻激情| 国产精品www| 91久久久久久| 欧美在线一区二区视频| 中国china体内裑精亚洲片| 亚洲国产精品久久久久秋霞蜜臀| 91免费人成网站在线观看18| 成人激情综合网| 欧美天天综合色影久久精品| 亚洲国产福利在线| 成人欧美在线视频| 日韩精品在线视频观看| 北条麻妃久久精品| 久久影视免费观看| 国产精品欧美日韩久久| 亚洲男人的天堂在线| 国产深夜精品福利| 亚洲国产日韩一区| 国产精品爱啪在线线免费观看| 欧美午夜www高清视频| 中文字幕av一区二区三区谷原希美| 亚洲大胆美女视频| 亚洲国产美女久久久久| 色www亚洲国产张柏芝| 欧美午夜www高清视频|