/// <summary>
        /// Delete an app pool
        /// </summary>
        /// <param name="name"></param>
        /// <returns></returns>
        public static bool DeleteAppPool(string name)
        {
            if (IISAppPool.Exsit(name) == false)
            {
                return(false);
            }

            IISAppPool appPool = IISAppPool.OpenAppPool(name);

            appPool._entry.DeleteTree();
            return(true);
        }
        /// <summary>
        /// Open a application pool and return an IISAppPool instance
        /// </summary>
        /// <param name="name">application pool name</param>
        /// <returns>IISAppPool object</returns>
        public static IISAppPool OpenAppPool(string name)
        {
            string connectStr = "IIS://localhost/W3SVC/AppPools/";

            connectStr += name;

            if (IISAppPool.Exsit(name) == false)
            {
                return(null);
            }


            DirectoryEntry entry = new DirectoryEntry(connectStr);

            return(new IISAppPool(entry));
        }
        /// <summary>
        /// create app pool
        /// </summary>
        /// <param name="name">the app pool to be created</param>
        /// <returns>IISAppPool created if success, else null</returns>
        public static IISAppPool CreateAppPool(string name)
        {
            DirectoryEntry Service = new DirectoryEntry("IIS://localhost/W3SVC/AppPools");

            foreach (DirectoryEntry entry in Service.Children)
            {
                if (entry.Name.Trim().ToLower() == name.Trim().ToLower())
                {
                    return(IISAppPool.OpenAppPool(name.Trim()));
                }
            }

            // create new app pool
            DirectoryEntry appPool = Service.Children.Add(name, "IIsApplicationPool");

            appPool.CommitChanges();
            Service.CommitChanges();

            return(new IISAppPool(appPool));
        }
        /// <summary>
        /// create application from this dir
        /// </summary>
        /// <param name="appPool">app pool to use, null means default</param>
        public void CreateApplication(IISAppPool appPool)
        {
            if (appPool == null)
            {
                this.server.Invoke("AppCreate", true);
            }
            else
            {
                this.server.Invoke("AppCreate3", new object[] { 0, appPool.Name, true });
            }

            this.server.Properties["AppFriendlyName"].Clear();
            this.server.Properties["AppIsolated"].Clear();
            this.server.Properties["AccessFlags"].Clear();
            this.server.Properties["FrontPageWeb"].Clear();
            this.server.Properties["AppFriendlyName"].Add(this.server.Name);
            this.server.Properties["AppIsolated"].Add(2);
            this.server.Properties["AccessFlags"].Add(513);
            this.server.Properties["FrontPageWeb"].Add(1);
            //siteVDir.Invoke("AppCreate3",   new   object[]   {2,   "DefaultAppPool",   true});

            this.server.CommitChanges();
        }