2010-11-03 83 views

回答

5

如果您使用IIS6:

您需要在Visual Studio中的Add References .NET程序集中添加對System.DirectoryServices的引用標籤:

using System; 
using System.DirectoryServices; 

namespace ListRootAppPathsIIS6 
{ 
    class Program 
    { 
    static void Main(string[] args) 
    { 
     using (DirectoryEntry de = new DirectoryEntry("IIS://Localhost/W3SVC")) 
     { 
     foreach (DirectoryEntry w3svc in de.Children) 
     { 
      if (w3svc.SchemaClassName == "IIsWebServer") 
      { 
      string rootPath = 
       String.Format("IIS://Localhost/W3SVC/{0}/root", w3svc.Name); 
      using (DirectoryEntry root = new DirectoryEntry(rootPath)) 
      { 
       string info = String.Format("{0} - {1} - {2}", 
        w3svc.Name, 
        w3svc.Properties["ServerComment"].Value, 
        root.Properties["Path"].Value); 

       Console.WriteLine(info); 
      } 
      } 
     } 
     } 

     Console.ReadLine(); 
    } 
    } 
} 

如果你正在使用IIS7:

增加提及C:\Windows\System32\inetsrv\Microsoft.Web.Administration.dll

using System; 
using System.Linq; 
using Microsoft.Web.Administration; 

namespace ListRootAppPathsIIS7 
{ 
    class Program 
    { 
    static void Main(string[] args) 
    { 
     using(ServerManager serverManager = new ServerManager()) 
     { 
     foreach (var site in serverManager.Sites) 
     { 
      var app = site.Applications.Where(a => a.Path == "/").First(); 
      var vdir = app.VirtualDirectories.Where(v => v.Path == "/").First(); 
      string info = String.Format("{0} - {1} - {2}", 
       site.Id, 
       site.Name, 
       Environment.ExpandEnvironmentVariables(vdir.PhysicalPath)); 

      Console.WriteLine(info); 
     } 
     } 
     Console.ReadLine(); 

    } 
    } 
} 

第一種方法(使用System.Directoryservices)將與IIS7工作提供你已經安裝IIS6管理兼容性位。

在這兩種情況下,您都需要以管理員身份運行。

+0

謝謝!這正是我需要的! – Kottan 2010-11-10 16:14:10

2

你可以叫出

C:\Windows\system32\inetsrv\appcmd.exe list vdir 

(使用API​​來獲取過程中的正確的文件夾)。並過濾爲「網站 \」(默認網站「默認網站/」。我假設有一些API來做到這一點(但是,當然,對於較舊的IIS版本,這是非常腳本導向,所以需要處理。IDispatch調用方法和財產得到)

這確實需要在IIS7和7.5提升進程(除非有足夠的權限,IIS已經被委派)