C#創建IIS之網站或虛擬目錄
来源:互联网 发布:阿尔德里奇数据 编辑:程序博客网 时间:2024/06/08 13:28
IISManager.cs
- using System;
- using System.Collections.Generic;
- using System.Text;
- using System.DirectoryServices;
- namespace CreaIISvDir
- {
- class IISManager
- {
- public IISManager()
- {
- }
- public static string VirDirSchemaName = "IIsWebVirtualDir";
- private string _serverName;
- public string ServerName
- {
- get
- {
- return _serverName;
- }
- set
- {
- _serverName = value;
- }
- }
- /// <summary>
- /// 创建網站或虚拟目录
- /// </summary>
- /// <param name="WebSite">服务器站点名称(localhost)</param>
- /// <param name="VDirName">虚拟目录名称</param>
- /// <param name="Path">實際路徑</param>
- /// <param name="RootDir">true=網站;false=虛擬目錄</param>
- /// <param name="iAuth">设置目录的安全性,0不允许匿名访问,1为允许,2基本身份验证,3允许匿名+基本身份验证,4整合Windows驗證,5允许匿名+整合Windows驗證...更多請查閱MSDN</param>
- /// <param name="webSiteNum">1</param>
- /// <param name="serverName">一般為localhost</param>
- /// <returns></returns>
- public bool CreateWebSite(string WebSite, string VDirName, string Path, bool RootDir, int iAuth, int webSiteNum, string serverName)
- {
- try
- {
- System.DirectoryServices.DirectoryEntry IISSchema;
- System.DirectoryServices.DirectoryEntry IISAdmin;
- System.DirectoryServices.DirectoryEntry VDir;
- bool IISUnderNT;
- //
- // 确定IIS版本
- //
- IISSchema = new System.DirectoryServices.DirectoryEntry("IIS://" + serverName + "/Schema/AppIsolated");
- if (IISSchema.Properties["Syntax"].Value.ToString().ToUpper() == "BOOLEAN")
- IISUnderNT = true;
- else
- IISUnderNT = false;
- IISSchema.Dispose();
- //
- // Get the admin object
- // 获得管理权限
- //
- IISAdmin = new System.DirectoryServices.DirectoryEntry("IIS://" + serverName + "/W3SVC/" + webSiteNum + "/Root");
- //
- // If we're not creating a root directory
- // 如果我们不能创建一个根目录
- //
- if (!RootDir)
- {
- //
- // If the virtual directory already exists then delete it
- // 如果虚拟目录已经存在则删除
- //
- foreach (System.DirectoryServices.DirectoryEntry v in IISAdmin.Children)
- {
- if (v.Name == VDirName)
- {
- // Delete the specified virtual directory if it already exists
- try
- {
- IISAdmin.Invoke("Delete", new string[] { v.SchemaClassName, VDirName });
- IISAdmin.CommitChanges();
- }
- catch (Exception ex)
- {
- throw ex;
- }
- }
- }
- }
- //
- // Create the virtual directory
- // 创建一个虚拟目录
- //
- if (!RootDir)
- {
- VDir = IISAdmin.Children.Add(VDirName, "IIsWebVirtualDir");
- }
- else
- {
- VDir = IISAdmin;
- }
- //
- // Make it a web application
- // 创建一个web应用
- //
- if (IISUnderNT)
- {
- VDir.Invoke("AppCreate", false);
- }
- else
- {
- VDir.Invoke("AppCreate", true);
- }
- //
- // Setup the VDir
- // 安装虚拟目录
- //AppFriendlyName,propertyName,, bool chkRead,bool chkWrite, bool chkExecute, bool chkScript,, true, false, false, true
- VDir.Properties["AppFriendlyName"][0] = VDirName; //应用程序名称
- VDir.Properties["AccessRead"][0] = true; //设置读取权限
- VDir.Properties["AccessExecute"][0] = false;
- VDir.Properties["AccessWrite"][0] = false;
- VDir.Properties["AccessScript"][0] = true; //执行权限[純腳本]
- //VDir.Properties["AuthNTLM"][0] = chkAuth;
- VDir.Properties["EnableDefaultDoc"][0] = true;
- VDir.Properties["EnableDirBrowsing"][0] = false;
- VDir.Properties["DefaultDoc"][0] = "Default.aspx,Index.aspx,Index.asp"; //设置默认文档,多值情况下中间用逗号分割
- VDir.Properties["Path"][0] = Path;
- VDir.Properties["AuthFlags"][0] = iAuth;
- //
- // NT doesn't support this property
- // NT格式不支持这特性
- //
- if (!IISUnderNT)
- {
- VDir.Properties["AspEnableParentPaths"][0] = true;
- }
- //
- // Set the changes
- // 设置改变
- //
- VDir.CommitChanges();
- return true;
- }
- catch (Exception ex)
- {
- throw ex;
- }
- }
- /// <summary>
- /// 獲取VDir支持的所有屬性
- /// </summary>
- /// <returns></returns>
- public string GetVDirPropertyName()
- {
- //System.DirectoryServices.DirectoryEntry VDir;
- const String constIISWebSiteRoot = "IIS://localhost/W3SVC/1/ROOT/iKaoo";
- DirectoryEntry root = new DirectoryEntry(constIISWebSiteRoot);
- string sOut = "";
- //下面的方法是得到所有属性名称的方法:
- foreach (PropertyValueCollection pvc in root.Properties)
- {
- //Console.WriteLine(pvc.PropertyName);
- sOut += pvc.PropertyName + ":" + pvc.Value.ToString() + "-----------";
- }
- return sOut;
- }
- /// <summary>
- /// 創建虛擬目錄
- /// </summary>
- /// <param name="sDirName">虛擬目錄程式名稱</param>
- /// <param name="sPath">實體路徑</param>
- /// <param name="sDefaultDoc">黙認首頁,多個名稱用逗號分隔</param>
- /// <param name="iAuthFlags">设置目录的安全性,0不允许匿名访问,1为允许,2基本身份验证,3允许匿名+基本身份验证,4整合Windows驗證,5允许匿名+整合Windows驗證...更多請查閱MSDN</param>
- /// <param name="sWebSiteNumber">Win2K,2K3支持多個網站,本次操作哪個網站,黙認網站為1</param>
- /// <returns></returns>
- public bool CreateVDir(string sDirName,string sPath,string sDefaultDoc,int iAuthFlags,string sWebSiteNumber)
- {
- try
- {
- String sIISWebSiteRoot = "IIS://localhost/W3SVC/" + sWebSiteNumber + "/ROOT";
- DirectoryEntry root = new DirectoryEntry(sIISWebSiteRoot);
- foreach (System.DirectoryServices.DirectoryEntry v in root.Children)
- {
- if (v.Name == sDirName)
- {
- // Delete the specified virtual directory if it already exists
- root.Invoke("Delete", new string[] { v.SchemaClassName, sDirName });
- root.CommitChanges();
- }
- }
- DirectoryEntry tbEntry = root.Children.Add(sDirName, root.SchemaClassName);
- tbEntry.Properties["Path"][0] = sPath;
- tbEntry.Invoke("AppCreate", true);
- //tbEntry.Properties["AccessRead"][0] = true;
- //tbEntry.Properties["ContentIndexed"][0] = true;
- tbEntry.Properties["DefaultDoc"][0] = sDefaultDoc;
- tbEntry.Properties["AppFriendlyName"][0] = sDirName;
- //tbEntry.Properties["AccessScript"][0] = true;
- //tbEntry.Properties["DontLog"][0] = true;
- //tbEntry.Properties["AuthFlags"][0] = 0;
- tbEntry.Properties["AuthFlags"][0] = iAuthFlags;
- tbEntry.CommitChanges();
- return true;
- }
- catch (Exception ex)
- {
- throw ex;
- }
- }
- }
- }
Call it
- private void btnCreateIISvDir_Click(object sender, EventArgs e)
- {
- if(new IISManager().CreateWebSite("localhost", "Vtest", "E://DOC", false, 1, 1, "localhost"))
- lbInfo.Text = "Create Vtest OK";
- }
- private void btnGetPropertyName_Click(object sender, EventArgs e)
- {
- txtPN.Text = new IISManager().GetVDirPropertyName();
- }
- private void btnCreaVdir_Click(object sender, EventArgs e)
- {
- if (new IISManager().CreateVDir("iKaoo", "E://DOC", "index.aspx,Default.aspx", 1, "1"))
- lbInfo.Text = "Create iKaoo OK";
- }
- C#創建IIS之網站或虛擬目錄
- C#代码操作IIS之虚拟目录
- 用C#在iis里建网站
- C#运算符之异或运算
- C# + WMI 管理IIS之:指定匿名访问用户
- ASP.NET C# 如何在程序中控制IIS服务或应用程序池重启?
- ASP.NET C# 如何在程序中控制IIS服务或应用程序池重启?
- 关于C#中通过IIS遍历服务器相应目录的问题之关于C#中控制IIS的问题(DirectoryEntry )
- C#操作IIS代码
- c#操作IIS
- C#操作IIS
- C#操纵IIS.
- c# 操作 IIS
- C# 操作iis
- C#操作IIS代码
- C#操作IIS
- C#操作IIS
- C#操作IIS
- 用户控件传值的问题研究
- libjingle翻译之《Important Concepts(重要概念)之Naming Conventions(命名约定)》
- Java连接SQL Server 2000
- 一个完整的共享內存类
- 翻译《real-time 3d terrain engines using C++ and DX9 》
- C#創建IIS之網站或虛擬目錄
- SQL查询分析器远程单步调试存储过程的解决之道?
- 基于IP-PBX的VoIP系统解决方案
- VC中利用MFC设计绘图程序初步
- 系统封装详解
- 如何找卡巴斯基杀毒软件及注册码
- jQuery插件(右下角弹出窗口)
- 一个Fuxi语言的专家系统
- .Net开发中的多线程编程-文章