2016-03-29 1 views
2

Я пытаюсь получить доменное имя с помощью C# с кодом ниже,Не удается получить доменное имя с помощью C#

static void Main(string[] args) 
{ 
    var domainName = IPGlobalProperties.GetIPGlobalProperties().DomainName; 
    Console.WriteLine(domainName); 
    Console.ReadLine(); 
} 

Он печатает доменное имя правильно в области связанных окон 8 машин. Но он ничего не печатает на машине Windows Server 2012 R2.

Как получить доменное имя на компьютере с Windows Server 2012.

+1

Проверьте этот: http://stackoverflow.com/questions/4249139/c-sharp-active-directory-get-domain-name-of-user – zchpit

+0

Является ли сервер частью домена? Имеет ли он несколько интерфейсов? Какой из них используется в этой проверке? Если вы отключите другие локальные сети, тогда она будет решена? –

+0

@zchpit Пользовательский домен не обязательно является сетевым доменом. –

ответ

1

В прошлом, я использовал этот код, чтобы получить имя домена. Доступ к нему осуществляется через переменные среды на этой машине.

string UserDomain = Environment.UserDomainName.ToString(); 
Console.WriteLine(UserDomain); 

Возможно, исключение вызвано запуском его на сервере, для которого у пользователя нет соответствующих разрешений. Вы пытались сделать «запустить как администратор» или «запустить как другой пользователь» с exe?

+0

Я тоже пробовал с администратором. Но это не работает. Я уже пытался получить от переменной окружения. Работает. Это правильный способ получить доменное имя? – Kumar

+0

Kumar, Еще несколько вещей, чтобы узнать, ведет ли он вас куда угодно: 1) точнее, вы открыли командную строку и запустили exe из этой командной строки? 2) Я попробую запустить команду «set», чтобы увидеть, возвращает ли все переменные среды и видит значения. 3) Проверьте команду iCacls. Это может помочь определить, какие разрешения у пользователя на этом сервере. 4) Я думаю, что исключение указывает на какую-то проблему с правами/правами. –

1

Я надеюсь, что работает для вас:

string domainName = System.DirectoryServices.ActiveDirectory.Domain.GetComputerDomain().Name; 
+0

Оберните его в try/catch, потому что он может бросить. –

+0

Да, он должен быть обернут с try/catch, но я не написал метод, который я только что дал одну строку кода. –

+0

Его работы. Как это работает? Почему мой код не работает. Что-то не так в этом методе. – Kumar

Смежные вопросы