2015-04-29 32 views
0

我需要更改連接在同一網絡中的計算機上的Windows用戶的密碼。爲此,我使用PrincipalContext方法連接機器,然後獲取指定的用戶並最終更改密碼。如何在使用PrincipalContext時檢查連接是否成爲服務器?

private bool ChangeUserPassword(string serverName,string serverip,string adminUserName, string adminUserPassword, string userName, string newIISPassword) 
    {         
      using (var context = new PrincipalContext(ContextType.Machine, serverName, adminUserName, adminUserPassword))     
      using (var user = UserPrincipal.FindByIdentity(context, IdentityType.SamAccountName, userName)) 
      { 
       user.SetPassword(newIISPassword); 
       user.Save(); 
      } 
} 

的問題是,有時我不會到服務器的連接時,我提供「服務器名稱」,但與「SERVERIP」,反之亦然作品。 如果連接context.ConnectedServer將顯示服務器名稱,如果不是則顯示未知路徑或錯誤的用戶名錯誤。

如果連接不發,我可以用SERVERIP作爲參數

using (var context = new PrincipalContext(ContextType.Machine, serverIp, adminUserName, adminUserPassword)) 

對於我試圖if(context.ConnectedServer != serverName)知道連接無法正常工作,並把上面的代碼裏面它。但是因爲是它會返回錯誤沒有ConnectedServer。

如何檢查與服務器的連接是否成功?

回答

0

您的DNS服務器可能未完全配置在您的網絡上。請使用您的機器名稱的FQDN。

Example of Full Computer Name

+0

我正在爲客戶端開發此應用程序。我不能堅持讓他們在他們的網絡上進行這種改變。因此,在代碼級別找到解決方案是我現在唯一的選擇。 – Nachikethas

+0

我不是說要在他們的網絡上進行更改。我只是說他們應該輸入/使用**完整的電腦名稱**。 –

相關問題