Не уверен, для чего конкретно вопрос, но для чего он стоит, у меня есть тестовая среда, которая запускает тесты на виртуальных машинах и нуждается в их перезагрузке.После перезагрузки коробки (через WMI) я жду сбоя проверки связи, затем успешной проверки связи (используя System.Net.NetworkInformation.Ping
, как упоминалось другими), затем мне нужно ждать, пока Windows не будет готова:
private const int RpcServerUnavailable = unchecked((int)0x800706BA);
private const int RpcCallCancelled = unchecked((int)0x80010002);
public bool WindowsUp(string hostName)
{
string adsiPath = string.Format(@"\\{0}\root\cimv2", hostName);
ManagementScope scope = new ManagementScope(adsiPath);
ManagementPath osPath = new ManagementPath("Win32_OperatingSystem");
ManagementClass os = new ManagementClass(scope, osPath, null);
ManagementObjectCollection instances = null;
try
{
instances = os.GetInstances();
return true;
}
catch (COMException exception)
{
if (exception.ErrorCode == RpcServerUnavailable || exception.ErrorCode == RpcCallCancelled)
{
return false;
}
throw;
}
finally
{
if (instances != null)
{
instances.Dispose();
instances = null;
}
}
}
Этонемного наивно, но это работает :) 1005 *