2015-12-15 3 views
0

Мне нужно проверить имя пользователя для домена, и это отлично работает с этим кодом. Перед нами стоит задача: когда система еще не входит в состав домена (в рабочей группе), пользователь не найден. (но система подключена к домену, потому что я его пингую, просто не являюсь ее частью)Проверка пользователя в домене

Может кто-нибудь мне немного помочь? Я хочу проверить пользователя в домене, когда система все еще находится в рабочей группе.

Ping domainserver = new Ping(); 
PingReply reply = domainserver.Send("ipadress domain server"); 

if (reply.Status == IPStatus.Success) 
{ 

    using (var domianContext = new PrincipalContext(ContextType.Domain, "domain")) 
    using (var foundUser = UserPrincipal.FindByIdentity(domianContext, IdentityType.SamAccountName, "username")) 
     if (foundUser == null) 
     { 
      MessageBox.Show("Username is not found on the domain"); 
     } 

     else 
     { 
     MessageBox.Show("Username is found on the domain"); 
     } 
} 
else 
{ 
    MessageBox.Show("It seems there is no network connection, please connect to the network first."); 
} 
+0

Отметили это [Как определить, присоединена ли машина к домену (в C#)?] (Http://stackoverflow.com/questions/926227/how-to-detect-if-machine-is-joined-to -области-в-с) – Athafoud

ответ

0

Лучше работать с исключениями, брошенными из классов Principal, чем с помощью ifs.

Например, new PrincipalContext не будет работать, если вы не являетесь частью домена.

try 
{ 
    pc = new PrincipalContext(ContextType.Domain); 
} 
catch (PrincipalServerDownException ex) 
{ 
    //Domain is not accesible. 
} 

В зависимости от того, что фактических вы пытаетесь достичь вы также можете проверить содержимое переменной Environment.UserDomainName

0

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

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