【问题标题】:How to correctly link the installed web application name and its virtual directory name?如何正确链接已安装的 Web 应用程序名称及其虚拟目录名称?
【发布时间】:2019-05-13 22:50:17
【问题描述】:

使用 ServerManager,我可以获得已安装 Web 应用程序的虚拟目录列表。我还可以使用注册表项搜索来验证是否安装了特定的 Web 应用程序。但是,我无法找到通常位于 inetpub\wwwroot 中的 Web 应用程序物理路径。

相关注册表中的InstallLocation 字段没有任何值。我怎样才能做到这一点?

【问题讨论】:

    标签: c# .net iis registry installation


    【解决方案1】:

    您可以使用DirectoryEntry 浏览IIS 配置。这是从another question 提取的示例:

    void ListVirtualDirectories(string serverName, int siteId) {            
       DirectoryEntry iisServer = new DirectoryEntry("IIS://" + serverName + "/W3SVC/" + siteId + "/ROOT");
    
       foreach (DirectoryEntry webDir in iisServer.Children) {
           if (webDir.SchemaClassName.Equals("IIsWebVirtualDir"))
                   Console.WriteLine("Found virtual directory {0}", webDir.Name);
       }
    }
    

    siteId 是一个数值,对应于 IIS 中列出的每个站点。此方法强制您提供它,但如果您愿意,您也可以找到服务器上的所有站点。如果您需要,只需在 Google 上搜索即可。但这应该可以帮助您入门。

    【讨论】:

    • 这里的问题不是列出 IIS 中的可用网站,而是如何将特定网站的虚拟目录与其安装程序产品名称链接起来。例如,您可以在您的机器上安装一个名为“ABC DEF”的 Web 应用程序,但在安装过程中,您可以将该程序的虚拟目录重命名为“XYZ”。我可以找到这两个名字,但我不知道如何关联它们。当您卸载程序“ABC DEF”时,Windows 知道如何从相关虚拟目录“XYZ”中删除相关文件。所以这必须保存在某个地方!
    • 此代码列出了特定网站中的虚拟目录。如果你能看到虚拟目录的属性,那么你就可以读取物理路径。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-11
    • 1970-01-01
    • 1970-01-01
    • 2010-11-01
    • 2011-10-13
    • 2017-01-15
    相关资源
    最近更新 更多