How to read a Website's Directory Structure using WMI and C# in IIS 6.0?

Posted by Steve Johnson on Stack Overflow See other posts from Stack Overflow or by Steve Johnson
Published on 2010-03-26T05:08:18Z Indexed on 2010/03/26 5:13 UTC
Read the original article Hit count: 591

Filed under:
|
|
|
|

Hi all,

I need to read a website's folders using WMI and C# in IIS 6.0. I am able to read the Virtual directories and applications using the "IISWebVirtualDirSetting" class. However the physical folders located inside a website cannot be read using this class.

And for my case i need to read sub folders located within a website and later on set permission on them. For my requirement i dont need to work on Virtual Directories/Web Service Applications (which can be easily obtained using the code below..).

I have tried to use IISWebDirectory class but it has been useful.

Here is the code that reads IIS Virtual Directories...

 public static ArrayList RetrieveVirtualDirList(String ServerName, String WebsiteName)
        {
            ConnectionOptions options = SetUpAuthorization();
            ManagementScope scope = new ManagementScope(string.Format(@"\\{0}\root\MicrosoftIISV2", ServerName), options);
            scope.Connect();
            String SiteId = GetSiteIDFromSiteName(ServerName, WebsiteName);
            ObjectQuery OQuery = new ObjectQuery(@"SELECT * FROM IISWebVirtualDirSetting");
            //ObjectQuery OQuery = new ObjectQuery(@"SELECT * FROM IIsSetting");

            ManagementObjectSearcher WebSiteFinder = new ManagementObjectSearcher(scope, OQuery);
            ArrayList WebSiteListArray = new ArrayList();
            ManagementObjectCollection WebSitesCollection = WebSiteFinder.Get();
            String WebSiteName = String.Empty;
            foreach (ManagementObject WebSite in WebSitesCollection)
            {
                WebSiteName = WebSite.Properties["Name"].Value.ToString();
                WebsiteName = WebSiteName.Replace("W3SVC/", "");
                String extrctedSiteId = WebsiteName.Substring(0, WebsiteName.IndexOf('/'));
                String temp = WebsiteName.Substring(0, WebsiteName.IndexOf('/') + 1);
                String VirtualDirName = WebsiteName.Substring(temp.Length);
                WebsiteName = WebsiteName.Replace(SiteId, "");
                if (extrctedSiteId.Equals(SiteId))
                //if (true)
                {
                    WebSiteListArray.Add(VirtualDirName );
                    //WebSiteListArray.Add(WebSiteName);
                    //+ "|" + WebSite.Properties["Path"].Value.ToString()
                }
            }
            return WebSiteListArray;
        }

Kindly help in this regard.

Thanks you.

© Stack Overflow or respective owner

Related posts about iis6

Related posts about wmi