| DirectoryEntry.Properties遍历IIS属性
					当前位置:点晴教程→知识管理交流
					
					→『 技术文档交流 』
					
				 
 一.平台:Windows XP SP3+ IIS 5.1 + Visual Studio 2005 .NET框架下,System.DirectoryServices命名空间中的DirectoryEntry提供了活动目录组件管理功能,它调用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中,可右击网站(FTP站点)à默认网站(默认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. 虚拟目录|应用程序设置|执行权限为“无”时 // (1)脚本资源访问 // 不可读取且不可写入为16;可读取不可写入为17; // 可写入不可读取为18;可读取且可写入为19 // (2)无脚本资源访问 // 不可读取且不可写入为0;可读取不可写入为1; // 可写入不可读取为2;可读取且可写入为3 // 2. 虚拟目录|应用程序设置|执行权限为“纯脚本”时 // (1)脚本资源访问 // 不可读取且不可写入为528;可读取不可写入为529; // 可写入不可读取为530;可读取且可写入为531 // (2)无脚本资源访问 // 不可读取且不可写入为512;可读取不可写入为513; // 可写入不可读取为514;可读取且可写入为515 // 3. 虚拟目录|应用程序设置|执行权限为“脚本和可执行文件”时 // (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值; // 允许执行的权限,默认为纯脚本 
 de.Properties["AccessFlags"][0] = 如上枚举数值; // 访问标识 // AccessFlags属性值就是由AccessRead(1),AccessScript(512),AccessExecute(4) 等等的值// 相加而得来的。例如执行权限为“纯脚本”时,无脚本资源访问,可读取不可写入为513 = // AccessScript(512) + //AccessRead(1)。 // 执行权限为“脚本和可执行文件”时, 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//虚拟目录|应用程序设置|开始位置:默认网站\test AppIsolated[0] =2 //虚拟目录|应用程序设置|应用程序保护,低(IIS进程)为0,中(公用)// 为2,高(独立)为1,默认为2:中(公用) // .NET对应属性如下,其中de为虚拟目录对应的DirectoryEntry对象 de.Properties["AppIsolated"][0] = 如上枚举数值; 
 //【自定义错误】 HttpErrors[0] =400,*,FILE,C:\WINDOWS\help\iisHelp\common\400.htm …… HttpErrors[31] =500,100,URL,/iisHelp/common/500-100.asp 
 // 文档|启用默认文档,可手动添加首页。如果没有开启虚拟目录|目录浏览,又没有指定首// 页则访问站点出/现HTTP403错误;只能在url中详细指定站点内具体网页文件名称。 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)|网络目录|连接用户|网络目录安全凭据 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元数据(Metabase)的层次结构。 参考: 《IIS权限设置》 《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 配置数据库中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 编辑过 | 关键字查询 相关文章 正在查询... |