获取当前AD域加入信息的最可靠方法是什么? (DsRoleGetPrimaryDomainInformation ,?)

时间:2018-11-19 21:09:47

标签: c# winapi active-directory registry azure-active-directory

随着Azure AD域加入的出现,一些现有答案可能已过时或不完整。

获取当前AD域状态的最准确/最可靠的方法是什么,以使我能够确定它是Azure AD,Premise AD还是任何其他可能的设计(本机UNIX Kerberos)来进行?

我发现的一些键包括:

  • HKLM \ Software \ Microsoft \ Windows NT \ CurrentVersion \ Winlogon \
  • HKLM \ CurrentControlSet \ Services \ Tcpip \ Parameters \ Domain
  • 配置/策略/管理模板/ Windows组件/工作区联接

除了调用win32 API DsRoleGetPrimaryDomainInformation外,我还可以检查注册表。

  • 获取主域加入状态的最可靠方法是什么?

与验证计算机信任有关的任何其他信息,与域控制器的连接“质量”都是有用的。

1 个答案:

答案 0 :(得分:1)

这里似乎有两个问题:

  1. 找出计算机是否已加入域,并且
  2. 找出它是哪种域。

无论如何,我有第一个问题的解决方案。您标记了c#,因此如果使用的是Domain.GetComputerDomain,则可以使用。将其放在try / catch块中,因为如果计算机未加入域,它将抛出ActiveDirectoryObjectNotFoundException异常。

但是,如果它已加入域,则会返回一个Domain对象。这将为您提供有关域的一些信息,例如DomainMode。我没有访问加入AzureAD域的计算机的权限,因此我不知道在那种情况下该信息的外观,但是可能有所不同。

否则,要获取有关该域的更详细信息,您可能需要使用该域的Name并尝试从该域本身读取更多信息。