私の知る限り、Active Directory 属性には、msIIS-FTPRoot と msIIS-FTPDir の 2 つがあります。
Technetから
基本的に、ユーザーのホーム フォルダは、Active Directory 内のユーザー オブジェクトの msIIS-FTPRoot および msIIS-FTPDir 属性を照会することにより、認証時に決定されます。msIIS-FTPRoot 値と msIIS-FTPDir 値を連結すると、ユーザーのホーム フォルダーへのパスになります。
例は次のようになります。
msIIS-FTPRoot = D:\FTP Users
msIIS-FTPDir = \JohnSmith
これにより、ユーザーのホーム フォルダとして "D:\FTP Users\JohnSmith" が作成されます。
すべてのユーザーとそこにあるデフォルトのディレクトリをトラバースするコード:
static void Main(string[] args)
{
string domain = Environment.GetEnvironmentVariable("USERDNSDOMAIN");
string dc = GetDC(domain);
string ldap = String.Format("LDAP://{0}/{1}", domain, dc);
DirectoryEntry e = new DirectoryEntry(ldap);
DirectorySearcher src = new DirectorySearcher(e, "(objectClass=user)");
SearchResultCollection res = src.FindAll();
foreach (SearchResult r in res)
{
DirectoryEntry f = r.GetDirectoryEntry();
Console.WriteLine(f.Name + "\t" + f.Properties["msIIS-FTPRoot"].Value + f.Properties["msIIS-FTPDir"].Value);
}
Console.ReadKey();
}
private static string GetDC(string domain)
{
StringBuilder sb = new StringBuilder(domain);
sb.Replace(".", ",DC=");
sb.Insert(0, "DC=");
return sb.ToString();
}