4

我刚刚在我的应用程序中实现了 Novell eDirectory。由于我们的应用程序支持 Microsoft ActiveDirectory,因此我想阻止附加配置参数,例如“Novell 是/否”。

那么,是否有其他方法可以确定计算机是否连接到 Microsoft ActiveDirectory 或 Novell 网络?

4

3 回答 3

2

我想知道计算机是否属于 Windows 域,您可以获得Win32_NTDomainWMI 信息。

在 powerShell 中,它给出:

Get-WmiObject Win32_NTDomain
ClientSiteName          : Default-First-Site-Name
DcSiteName              : Default-First-Site-Name
Description             : DOM
DnsForestName           : dom.fr
DomainControllerAddress : \\192.168.183.100
DomainControllerName    : \\WM2008R2ENT
DomainName              : DOM
Roles                   :
Status                  : OK

根据@ScottTx评论的版本你也可以使用Win32_ComputerSystemWMI 类

PS> (Get-WMIObject Win32_ComputerSystem).PartOfDomain
False

根据C# 中的Win32_NTDomain 类文档,您可以通过以下方式获取它:

using System;
using System.Collections.Generic;
using System.Text;

using System.Management;

namespace WMIQuery
{
  class WmiQuery
  {
    static void Main(string[] args)
    {
      ManagementObjectSearcher domainInfos = new ManagementObjectSearcher("select * from WIN32_NTDomain");

      foreach (ManagementObject domainInfo in domainInfos.Get())
      {
        Console.WriteLine("Name : {0}", domainInfo.GetPropertyValue("Name"));
        Console.WriteLine("Computer/domain : {0}", domainInfo.GetPropertyValue("Caption"));
        Console.WriteLine("Domain name : {0}", domainInfo.GetPropertyValue("DomainName"));
        Console.WriteLine("Status : {0}", domainInfo.GetPropertyValue("Status"));
      }

      // Edition according to @ScottTx comment you can also use `Win32_ComputerSystem` WMI class

      ManagementObjectSearcher ComputerInfos = new ManagementObjectSearcher("select * from Win32_ComputerSystem");
      foreach (ManagementObject ComputerInfo in ComputerInfos.Get())
      {
        if ((bool)ComputerInfo.GetPropertyValue("PartOfDomain"))
          Console.WriteLine("This computer is part of domain");
        else
          Console.WriteLine("This computer is not part of domain");
      }
    }
  }
}

添加对System.Management程序集的引用

于 2011-05-11T16:48:13.110 回答
1

嗯,像“连接到 Novell 网络”这样的声明比过去要模糊得多。如果使用 Novell (Netware) 客户端的工作站上的用户登录到 netware 服务器或提供 NCP (Netware Core Protocol) 之类的服务的服务器,例如 linux 上的 OES,则 Edirectory 中的网络地址属性应该只存在于用户当前已登录到 EDirectory (NDS)。

有时由于客户端有问题,如果用户登录,则此属性不存在,但通常该属性是您可以使用的。此外,用户同时登录 AD 和 NDS 也是完全正常的。此外,工作站本身也可以根据配置或使用的 Novell 产品登录到 NDS。

于 2011-05-18T20:45:30.083 回答
0

你怎么连接?通过 LDAP?如果是这样,请查找 sAMAccountName,它是 Active Directory 独有的。AD 中的每个用户和组都将具有该属性(这是强制性的)。而在 eDirectory 中没有人会拥有它,除非他们奇怪地扩展了 eDirectory 模式来添加它。

RootDSE 中可能有一些东西会指示哪个是您的源目录。但我不确定一个很好的例子。

于 2011-05-11T16:36:01.143 回答