1

我的任务是将我们产品的安装程序从 InstallShield 迁移到 WiX。

为了部署 Web 应用程序,以前的开发人员使用 InstallShield 中的自定义操作(用 C# 编写)。在 Wix 中,这不再是必需的,因为 wix 支持 IIS 部署。

无论如何,自定义操作中的代码之一使用 DirectoryEntry 对象来设置 Web 目录的属性:

DirectoryEntry.Properties["AuthNTLM"][0] = true;

这个设置有什么作用?我知道它与安全/权限有关,但它在 IIS 中实际设置了什么设置?它是否启用以下功能之一:

  • 集成 Windows 身份验证
  • 摘要式身份验证
  • 基本认证
  • .NET 护照身份验证

谢谢!

4

2 回答 2

2

不久前,我提供了一个类似问题的答案:

在 IIS 6 中的应用程序级别设置 NTAuthenticationProviders

AuthFlags(not AuthNTLM) 是一个标志值。您可以在不使用索引器的情况下进行设置,例如:

int MD_AUTH_ANONYMOUS = 1;
int MD_AUTH_BASIC = 2;
int MD_AUTH_NT = 4;

using(DirectoryEntry w3svc = new DirectoryEntry(@"IIS://Localhost/W3SVC"))
{
  using(DirectoryEntry webSite = w3svc.Children.Add(iisNumber, "IIsWebServer"))
  {
    // Configure website settings here...
    ....
    webSite.CommitChanges();

    using(DirectoryEntry siteRoot = webSite.Children.Add("root",
                                        IISSchemaClasses.IIsWebVirtualDir))
    {
      // Configure root application settings...
      ....
      // Only allow Basic and NTLM authentication
      siteRoot.Properties["AuthFlags"].Value = MD_AUTH_BASIC | MD_AUTH_NT 
      siteRoot.CommitChanges();
    }

  }
}
于 2010-09-27T11:00:32.050 回答
1

实际上,InstallShield 也可能不需要它。目前,InstallShield 实际上具有比 WiX 更好的内置 IIS 支持,并且这种类型的设置可以以声明方式完成,而无需编写自定义操作。此外,收集此信息的 InstallShield UI 看起来与 IIS MMC 管理单元非常相似,因此数据映射方式非常直观。

于 2010-09-28T15:32:40.830 回答