DirectoryEntry.Properties遍歷IIS屬性
當前位置:點晴教程→知識管理交流
→『 技術(shù)文檔交流 』
一.平臺:Windows XP SP3+ IIS 5.1 + Visual Studio 2005 .NET框架下,System.DirectoryServices命名空間中的DirectoryEntry提供了活動目錄組件管理功能,它調(diào)用ADSI操作IIS。 二.DirectoryEntry.Properties遍歷IIS Web虛擬目錄和Ftp虛擬目錄屬性 using System; using System.Collections.Generic; using System.Text; using System.DirectoryServices;
namespace IISVirDirProperties { class Program { static void Main(string[] args) { try { Console.WriteLine("請輸入欲查詢的虛擬目錄類型:"); Console.WriteLine("0代表IIS Web虛擬目錄"); Console.WriteLine("1代表IIS FTP虛擬目錄");
string SVCType, VirDirType; string strVirDirType = Console.ReadLine();
if(strVirDirType == "0") { SVCType = "W3SVC"; VirDirType = "IIsWebVirtualDir"; } else if(strVirDirType == "1") { SVCType = "MSFTPSVC"; VirDirType = "IIsFtpVirtualDir"; } else { Console.WriteLine("輸入有誤,只能輸入0或1!"); Console.ReadKey(); return; }
string RootPath = "IIS://localhost/" + SVCType + "/1/ROOT"; DirectoryEntry RootDE = new DirectoryEntry(RootPath); DirectoryEntry DE = null; Console.WriteLine("請輸入欲查詢的虛擬目錄名稱:"); string strVirDir = Console.ReadLine(); if(string.IsNullOrEmpty(strVirDir)) // 為空,查詢默認站點 { DE = RootDE; Console.WriteLine("默認站點的屬性如下:\n"); } else // 非空,查詢具體站點 { string WebSitePath = RootPath + "/" + strVirDir; if(DirectoryEntry.Exists(WebSitePath)) { DE = RootDE.Children.Find(strVirDir, VirDirType); Console.WriteLine("默認站點|{0}屬性如下:\n",strVirDir); } else { Console.WriteLine("你所查詢的虛擬目錄不存在!"); Console.ReadKey(); return; } } foreach (string elmentName in DE.Properties.PropertyNames) { PropertyValueCollection valueCollection = DE.Properties[elmentName]; for (int i = 0; i < valueCollection.Count; i++) { Console.WriteLine(elmentName + "[" + i.ToString() + "] =" + valueCollection[i].ToString()); } } } catch(Exception e) { Console.WriteLine(e.Message); }
Console.ReadKey(); } } } 在IIS6.0中,可右擊網(wǎng)站(FTP站點)à默認網(wǎng)站(默認FTP站點)àtestà所有任務à將配置保存到一個XML文件,打開XML文件可以看到 <configuration> +<MBProperty></configuration> 其中MBProperty即MetaBase詳細屬性信息。 三.IIS屬性解析 KeyType[0] =IisWebVirtualDir // Schema類名表明操作的目錄類型 // 【虛擬目錄】 Path[0] =D:\WebSiteTest // 虛擬目錄|本地路徑 // .NET對應屬性如下,其中de為虛擬目錄對應的DirectoryEntry對象 de.Properties["Path"][0] = 路徑字符串
AccessFlags[0] =513 // 虛擬目錄|讀取-寫入 // 1. 虛擬目錄|應用程序設置|執(zhí)行權(quán)限為“無”時 // (1)腳本資源訪問 // 不可讀取且不可寫入為16;可讀取不可寫入為17; // 可寫入不可讀取為18;可讀取且可寫入為19 // (2)無腳本資源訪問 // 不可讀取且不可寫入為0;可讀取不可寫入為1; // 可寫入不可讀取為2;可讀取且可寫入為3 // 2. 虛擬目錄|應用程序設置|執(zhí)行權(quán)限為“純腳本”時 // (1)腳本資源訪問 // 不可讀取且不可寫入為528;可讀取不可寫入為529; // 可寫入不可讀取為530;可讀取且可寫入為531 // (2)無腳本資源訪問 // 不可讀取且不可寫入為512;可讀取不可寫入為513; // 可寫入不可讀取為514;可讀取且可寫入為515 // 3. 虛擬目錄|應用程序設置|執(zhí)行權(quán)限為“腳本和可執(zhí)行文件”時 // (1)腳本資源訪問 // 不可讀取且不可寫入為532;可讀取不可寫入為533; // 可寫入不可讀取為534;可讀取且可寫入為535 // (2)無腳本資源訪問 // 不可讀取且不可寫入為516;可讀取不可寫入為517; // 可寫入不可讀取為518;可讀取且可寫入為519 // .NET對應屬性如下,其中de為虛擬目錄對應的DirectoryEntry對象 de.Properties["AccessRead"][0] = bool值; // 讀取 de.Properties["AccessWrite"][0] = bool值; // 寫入 de.Properties["AccessScript"][0] = bool值; // 腳本資源訪問 de.Properties["AccessExecute"][0] = bool值; // 允許執(zhí)行的權(quán)限,默認為純腳本
de.Properties["AccessFlags"][0] = 如上枚舉數(shù)值; // 訪問標識 // AccessFlags屬性值就是由AccessRead(1),AccessScript(512),AccessExecute(4) 等等的值// 相加而得來的。例如執(zhí)行權(quán)限為“純腳本”時,無腳本資源訪問,可讀取不可寫入為513 = // AccessScript(512) + //AccessRead(1)。 // 執(zhí)行權(quán)限為“腳本和可執(zhí)行文件”時, AccessScript(517)
DirBrowseFlags[0] =-1073741762 //虛擬目錄|目錄瀏覽 // 當【文檔】啟用默認文檔時為-1073741762,否則1073741886 // 當【文檔】未啟用默認文檔時為-2147483586,否則為62 // .NET對應屬性如下,其中de為虛擬目錄對應的DirectoryEntry對象 de.Properties["EnableDirBrowsing"][0] = bool值; // 目錄瀏覽
DontLog[0] = False//虛擬目錄|記錄訪問,否則True // .NET對應屬性如下,其中de為虛擬目錄對應的DirectoryEntry對象 de.Properties["DontLog"][0] = bool值; // 記錄訪問
ContentIndexed[0] =True//虛擬目錄|索引資源,否則False // .NET對應屬性如下,其中de為虛擬目錄對應的DirectoryEntry對象 de.Properties["ContentIndexed"][0] = bool值; // 記錄訪問
AppFriendlyName[0] =Test //虛擬目錄|應用程序設置|應用程序名 // .NET對應屬性如下,其中de為虛擬目錄對應的DirectoryEntry對象 de.Properties["AppFriendlyName"][0] = 字符串; // 應用程序名
AppRoot[0] =/LM/W3SVC/1/Root/test//虛擬目錄|應用程序設置|開始位置:默認網(wǎng)站\test AppIsolated[0] =2 //虛擬目錄|應用程序設置|應用程序保護,低(IIS進程)為0,中(公用)// 為2,高(獨立)為1,默認為2:中(公用) // .NET對應屬性如下,其中de為虛擬目錄對應的DirectoryEntry對象 de.Properties["AppIsolated"][0] = 如上枚舉數(shù)值;
//【自定義錯誤】 HttpErrors[0] =400,*,FILE,C:\WINDOWS\help\iisHelp\common\400.htm …… HttpErrors[31] =500,100,URL,/iisHelp/common/500-100.asp
// 文檔|啟用默認文檔,可手動添加首頁。如果沒有開啟虛擬目錄|目錄瀏覽,又沒有指定首// 頁則訪問站點出/現(xiàn)HTTP403錯誤;只能在url中詳細指定站點內(nèi)具體網(wǎng)頁文件名稱。 DefaultDoc[0] = Default.htm,Default.asp,index.htm,iisstart.asp // .NET對應屬性如下,其中de為虛擬目錄對應的DirectoryEntry對象 de.Properties["EnableDefaultDoc"][0] = bool值; //啟用默認文檔
// 【目錄安全性】 //目錄安全性|匿名訪問和身份控制|編輯|身份驗證方法|匿名訪問 AnonymousPasswordSync[0] =True //目錄安全性|匿名訪問和身份控制|編輯|身份驗證方法|匿名訪問使用的賬戶密碼 AnonymousUserName[0] =IUSR_57E2088F08C14CC AnonymousUserPass[0] =oEG'9bDK|S34\d // .NET對應屬性如下,其中de為虛擬目錄對應的DirectoryEntry對象 de.Properties["AuthAnonymous"][0] = bool值; // 允許匿名訪問 de.Properties["AnonymousUserName"][0] = 賬戶字符串; // 客戶端訪問Web服務器的匿名賬戶 de.Properties["AnonymousUserPass"][0] = 密碼字符串; // 客戶端訪問Web服務器的匿名賬戶密碼
// “另一臺計算機上的共享”(UNC)|網(wǎng)絡目錄|連接用戶|網(wǎng)絡目錄安全憑據(jù) UNCUserName[0] =Administrator UNCPassword[0] =123456 // .NET對應屬性如下,其中de為虛擬目錄對應的DirectoryEntry對象 de.Properties["UNCUserName"][0] = 賬戶字符串; // Web服務器橋接文件服務器的UNC賬戶 de.Properties["UNCPassword"][0] = 密碼字符串; // Web服務器橋接文件服務器的UNC賬戶密碼
//【ASP.NET】 ScriptMaps[0] =.asp,C:\WINDOWS\system32\inetsrv\asp.dll,5,GET,HEAD,POST,TRACE …… ScriptMaps[50] =.refresh,C:\windows\Microsoft.NET\Framework\v2.0.50727\aspnet_is api.dll,5,GET,HEAD,POST,DEBUG // 【HTTP頭】 // 自定義HTTP頭 HttpCustomHeaders[0] =X-Powered-By: ASP.NET 下圖為IIS Metabase Explorer顯示的IIS元數(shù)據(jù)(Metabase)的層次結(jié)構(gòu)。 參考: 《IIS Metabase Properties》 http://msdn.microsoft.com/en-us/library/ms525644.aspx 《DirectoryEntry.Properties屬性的遍歷》 http://blog.csdn.net/wenzhoufeng/archive/2007/05/15/1610017.aspx 《IIS 配置數(shù)據(jù)庫中AccessFlags屬性的處理與應用》 http://blog.csdn.net/hbu_dcf/archive/2009/03/04/3955800.aspx 《IIS 6新特性》 http://www.itlearner.com/article/2007/3706_2.shtm 《IIS 5.1\IIS6\IIS7的ASP.NET請求處理過程比較》 該文章在 2021/6/26 23:38:15 編輯過 |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |