您当前的位置: 首页 >>.NET>>.net基础
  • Web虚拟目录:Asp.net实现IIS控制管理

  • 发布者:Webe   发布时间:2007-4-17   点击次数:1214次


  •   (一)CreateWebDir.cs 使用示例
         string sServer = "localhost";
         string VirtualDir = "Bug2004";          \\虚拟目录
         string PathDir  = @"D:\myWebDirTest\Bug2000"  \\物理目录
      
        IISManager iisMg = new IISManager(sServer);
        iisMg.Connect();
       
        if (iisMg.Exists(VirtualDir]))
        {
        Console.Write(VirtualDir+ " is exist!");
        }
        else
        {
        myINI.IniWriteValue("WebDir","WebDirExist","false");
      
        iisMg.get_AnonymousUser();
        string[] anonymousUser = new string[2];
        anonymousUser[0] = iisMg.AnonymousUserName ;
        anonymousUser[1] = iisMg.AnonymousUserPass ;
      
        VirtualDirectory newVirDir = new VirtualDirectory(VirtualDir,PathDir,anonymousUser);
        if (iisMg.Create(newVirDir))
         Console.Write(VirtualDir+ " 创建成功!");
        else
         Console.Write(VirtualDir+ " 创建不成功!");
        }
      
        iisMg.Close();
      
      (二)CreateWebDir.cs 是转贴过来的,我作了些完善和修改
      ///***********************************************************
      ///**************        IIS控制管理类        **************
      ///************** 转贴自: 飞刀 http://www.aspcn.com *************
      ///***********************************************************
      using System;
      using System.Data;
      using System.DirectoryServices;
      using System.Collections;
      
      namespace CreateWebDir
      {
      /// <summary>
      /// IISManager 的摘要说明。
      /// </summary>
      public class IISManager
      {
       //定义需要使用的
       private string _server,_website,_AnonymousUserPass,_AnonymousUserName;
       private VirtualDirectories _virdirs;
       protected System.DirectoryServices.DirectoryEntry rootfolder;
       private bool _batchflag;
       public IISManager()
       {
        //默认情况下使用localhost,即访问本地机
        _server = "localhost";
        _website = "1";
        _batchflag = false;
       }
       public IISManager(string strServer)
       {
        _server = strServer;
        _website = "1";
        _batchflag = false;
       }
       /// <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";
        }
       }
       public string AnonymousUserName
       {
        get{ return _AnonymousUserName;}
        set{ _AnonymousUserName = value;}
       }
       public string AnonymousUserPass
       {
        get{ return _AnonymousUserPass;}
        set{ _AnonymousUserPass = value;}
       }
       //Server属性定义访问机器的名字,可以是IP与计算名
       public string Server
       {
        get{ return _server;}
        set{ _server = value;}
       }
       //WebSite属性定义,为一数字,为方便,使用string
       //一般来说第一台主机为1,第二台主机为2,依次类推
       public string WebSite
       {
        get{ return _website; }
        set{ _website = value; }
       }
      
       //虚拟目录的名字
       public VirtualDirectories VirDirs
       {
        get{ return _virdirs; }
        set{ _virdirs = value;}
       }
       ///<summary>
       ///定义公共方法
       ///</summary>
      
       //连接服务器
       public void Connect()
       {
        ConnectToServer();
       }
       //为方便重载
       public void Connect(string strServer)
       {
        _server = strServer;
        ConnectToServer();
       }
       //为方便重载
       public void Connect(string strServer,string strWebSite)
       {
        _server = strServer;
        _website = strWebSite;
        ConnectToServer();
       }
       //判断是否存这个虚拟目录
       public bool Exists(string strVirdir)
       {
        return _virdirs.Contains(strVirdir);
       }
       //添加一个虚拟目录
       public bool Create(VirtualDirectory newdir)
       {
        string strPath = "IIS://" + _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 ee)
        {
         //throw new Exception(ee.ToString());
         return false;
        }
        }
        else
        {
        return true;
        //throw new Exception("This virtual directory is already exist.");
        }
       }
       //得到一个虚拟目录
       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("This virtual directory is not exists");
        }
        return tmp;
       }
      
       //更新一个虚拟目录
       public void Update(VirtualDirectory dir)
       {
        //判断需要更改的虚拟目录是否存在
        if(_virdirs.Contains(dir.Name))
        {
        DirectoryEntry ode = rootfolder.Children.Find(dir.Name,"IIsWebVirtualDir");
        UpdateDirInfo(ode,dir);
        }
        else
        {
        //throw new Exception("This virtual directory is not exists.");
        }
       }
       
       //删除一个虚拟目录
       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
        {
        //throw new Exception("Can''t delete " + strVirdir + ",because it isn''t exists.");
        }
       }
       //批量更新
       public void UpdateBatch()
       {
        BatchUpdate(_virdirs);
       }
       //重载一个:-)
       public void UpdateBatch(VirtualDirectories vds)
       {
        BatchUpdate(vds);
       }
       
       ///<summary>
       ///私有方法
       ///</summary>
      
       public void Close()
       {
        _virdirs.Clear();
        _virdirs = null;
        rootfolder.Dispose();
      
       }
       //连接服务器
       private void ConnectToServer()
       {
        string strPath = "IIS://" + _server + "/W3SVC/" + _website +"/ROOT";
        try
        {
        this.rootfolder = new DirectoryEntry(strPath);
        _virdirs = GetVirDirs(th
  • 其实病毒都是利用浏览器的漏洞进行传播,大家在上网的时候最好用Firefox浏览器浏览网页,这种浏览器最大的好处就是安全!Firefox浏览器下载地址:http://www.rslj.cn/firefox/
最近更新
 
热点文章