C# - 有没有办法获取默认 FTP 站点的本地路径?

发布于 2024-08-16 18:53:09 字数 467 浏览 7 评论 0原文

有没有办法以编程方式获取默认 FTP 站点(在 IIS 中)的本地路径?

如 C:\program files\ftproot,如下所示:

alt text

我想它会是这样的:

DirectoryEntry ftproot = new DirectoryEntry("IIS://localhost/MSFTPSVC/1/Root");
string directory; // = ftproot.something

有什么想法吗?

编辑:这适用于 IIS 6.0。当然,这必须存储在某个地方 - 也许在注册表中?

Is there a way to get the local path of the Default FTP site (in IIS) programmatically?

Like C:\program files\ftproot, shown below:

alt text

I'd imagine it would be something like:

DirectoryEntry ftproot = new DirectoryEntry("IIS://localhost/MSFTPSVC/1/Root");
string directory; // = ftproot.something

Any ideas?

Edit: This would be for IIS 6.0. Surely this has got to be stored somewhere - maybe in the registry?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

单身狗的梦 2024-08-23 18:53:09

据我所知,Active Directory 有两个属性:msIIS-FTPRoot、msIIS-FTPDir。

来自 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();
        }

From what I know, there are two Active Directory attributes: msIIS-FTPRoot, msIIS-FTPDir.

From Technet

Basically, the user's home folder is determined upon authentication by querying the msIIS-FTPRoot and msIIS-FTPDir attributes of the user object in Active Directory. The concatenation of the msIIS-FTPRoot and msIIS-FTPDir values results in the path to the user's home folder.

An example may look like this:

  msIIS-FTPRoot = D:\FTP Users
  msIIS-FTPDir = \JohnSmith

This will result in "D:\FTP Users\JohnSmith" as the home folder for the user.

Code to traverse all the users and there default directories:

    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();
        }
妳是的陽光 2024-08-23 18:53:09

至少对于 IIS 6,我在注册表中找到了它:

HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\MSFtpsvc\Parameters\Virtual Roots\

数据格式有点奇怪 - 例如,D:\ftproot,,1

替代文本

For IIS 6 at least, I found it in the registry here:

HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\MSFtpsvc\Parameters\Virtual Roots\

Format of the data is a little strange - for instance, D:\ftproot,,1

alt text

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文