How to read an IIS 6 Website's Directory Structure using WMI?
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
6:23 UTC
Read the original article
Hit count: 568
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;
}
P.S:
I need to programmatically get the sub folders of an already deployed site(s) using WMI and C# in an ASP. Net Application. I need to find out the sub folders of existing websites in a local or remote IIS 6.0 Web Server. So i require a programmatic solution. Precisely if i am pointed at the right class (like IISWebVirtualDirSetting etc ) that i may use for retrieving the list of physical folders within a website then it will be quite helpful.
I am not working in Powershell and i don't really need a solution that involves powershell or vbscripts.
Any alternative programmatic way of doing the same in C#/ASP.Net will also be highly appreciated.
© Stack Overflow or respective owner