Как узнать, подключен ли компьютер к novell eDirectory или Microsoft ActiveDirectory? - PullRequest
4 голосов
/ 11 мая 2011

Я только что внедрил Novell eDirectory в свое приложение.Поскольку наше приложение поддерживает Microsoft ActiveDirectory, я хотел бы запретить использование дополнительного параметра конфигурации, например «Novell yes / no».

Итак, есть ли другой способ узнать, подключен ли компьютер к Microsoft ActiveDirectory или Novellсеть

Ответы [ 3 ]

2 голосов
/ 11 мая 2011

Если вы хотите знать, является ли компьютер частью домена Windows, вы можете получить Win32_NTDomain информацию WMI.

В 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_ComputerSystem WMI class

PS> (Get-WMIObject Win32_ComputerSystem).PartOfDomain
False

В соответствии с документацией класса Win32_NTDomain в C # вы можете получить его:

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 сборку

1 голос
/ 19 мая 2011

Что ж, утверждение типа «быть подключенным к сети Novell» намного сложнее, чем раньше.Если пользователь на рабочей станции, использующий клиент Novell (Netware), вошел на сервер netware или сервер, предлагающий такие службы, как NCP ​​(Netware Core Protocol), такие как OES в linux, то атрибут сетевого адреса в Edirectory должен присутствовать только в том случае, если пользовательв настоящее время вошел в EDirectory (NDS).

Иногда из-за глючного клиента этот атрибут отсутствует, если пользователь вошел в систему, но обычно этот атрибут - то, что вы можете использовать.Также вполне нормально, чтобы пользователь одновременно входил в AD & NDS.Кроме того, сама рабочая станция также может быть зарегистрирована в NDS в зависимости от конфигурации или используемых продуктов Novell.

0 голосов
/ 11 мая 2011

Как вы подключаетесь?Через LDAP?Если так, ищите sAMAccountName, и это уникально для Active Directory.Каждый пользователь и группа в AD будет иметь этот атрибут (это обязательно).Принимая во внимание, что в eDirectory его никто не получит, если только он странным образом не расширит схему eDirectory, добавив ее.

Возможно, в RootDSE есть что-то, что укажет, в каком каталоге вы находитесь.Но я не уверен в отличном примере.

...