.NET 3.x Как узнать время на компьютере в сети? - C#
Формулировка задачи:
Необходимо узнать текущее время на другом компьютере в сети.
Подскажите пожалуйста как это сделать.
Решение задачи: «.NET 3.x Как узнать время на компьютере в сети?»
textual
Листинг программы
/// <param name="machineName">Название комьютера</param>
/// <param name="userName">Имя пользователя в формате домен\имя</param>
/// <param name="password">Пароль пользователя.</param>
DateTime GetRemoteDateTime(string machineName, string userName = null, string password = null)
{
try
{
ManagementScope scope;
if (userName != null && password != null)
{
string[] domainAndUser = userName.Split('\\');
ConnectionOptions options = new ConnectionOptions
{
Username = domainAndUser[1],
Password = password,
Authority = "ntlmdomain:" + domainAndUser[0]
};
scope = new ManagementScope(string.Format(@"\\{0}\root\CIMV2", machineName), options);
}
else
{
scope = new ManagementScope(string.Format(@"\\{0}\root\CIMV2", machineName));
}
scope.Connect();
ObjectQuery query = new ObjectQuery("SELECT * FROM Win32_LocalTime");
ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query);
DateTime result = DateTime.MinValue;
foreach (ManagementObject queryObj in searcher.Get())
{
result = new DateTime(
Convert.ToInt32(queryObj["Year"]),
Convert.ToInt32(queryObj["Month"]),
Convert.ToInt32(queryObj["Day"]),
Convert.ToInt32(queryObj["Hour"]),
Convert.ToInt32(queryObj["Minute"]),
Convert.ToInt32(queryObj["Second"])
);
}
return result;
}
catch (ManagementException ex)
{
throw new ApplicationException("An error occurred while querying for WMI data", ex);
}
catch (UnauthorizedAccessException ex)
{
throw new ApplicationException("Connection error (user name or password might be incorrect)", ex);
}
}