VB.net 2005 получить системное время удаленного компьютера?

Я пытаюсь настроить задание «AT» для экспорта некоторых ключей реестра на удаленный компьютер, проблема в том, что команде DOS требуется время для выполнения. Я хочу получить системное время удаленного компьютера, чтобы я мог запланировать его запуск через 1 минуту с момента отправки команды.

Есть ли способ получить системное время удаленного компьютера с кодом VB.Net?


person Community    schedule 06.05.2009    source источник
comment
Я добавил к своему ответу образец кода. Это C #, но его легко преобразовать в VB.   -  person Jon B    schedule 06.05.2009


Ответы (3)


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

    Dim p As New System.Diagnostics.Process
    Dim pinfo As New System.Diagnostics.ProcessStartInfo
    Dim pout As String
    pinfo.FileName = ("C:\WINDOWS\system32\net.exe")
    pinfo.Arguments = ("time \\computername")
    pinfo.RedirectStandardOutput = True
    pinfo.UseShellExecute = False
    pinfo.CreateNoWindow = True
    p = Diagnostics.Process.Start(pinfo)
    p.WaitForExit()
    pout = p.StandardOutput.ReadLine
    MsgBox(pout)
person Community    schedule 06.05.2009

Ты можешь использовать:

net time \\computer_name

Вам просто нужно раскошелиться на это и проанализировать результат.


Вот пример кода. Он написан на C #, но его довольно легко перевести.

    static DateTime GetRemoteDateTime(string machineName)
    {
        machineName = @"\\" + machineName;
        System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo("net", "time " + machineName);
        startInfo.RedirectStandardOutput = true;
        startInfo.UseShellExecute = false;
        System.Diagnostics.Process p = System.Diagnostics.Process.Start(startInfo);
        p.WaitForExit();

        string output = p.StandardOutput.ReadLine();
        output = output.Replace("Current time at " + machineName + " is ", "");
        return DateTime.Parse(output);
    }

Я не стал добавлять обработку ошибок (если машина не найдена и т. Д.) - вы можете добавить все, что вам нужно, в соответствии с вашими целями.

person Jon B    schedule 06.05.2009
comment
Спасибо! Вы можете привести мне пример того, как проанализировать результат, не зная, как это сделать. - person ; 06.05.2009
comment
получение и ошибка с StandardOutput.Readline StandardOut не был перенаправлен или процесс еще не начался. есть идеи, что это значит? отправлю свой код, если вам нужно его увидеть. В очередной раз благодарим за помощь! - person ; 07.05.2009
comment
У меня работает ... Установка RedirectStandardOutput на True очень важна. - person Jon B; 07.05.2009

..и Мэйби, сделай небольшую проверку, если ты используешь

    ...
    startInfo.RedirectStandardOutput = true;
    startInfo.RedirectStandardError = true;
    ...

    string shellOut = "";
    if (p.ExitCode == 0)
    {
        shellOut = p.StandardOutput.ReadToEnd();
        Console.WriteLine("Operation completed successfully.");
    }
    else
    {
        shellOut = p.StandardError.ReadToEnd();
        Console.WriteLine(shellOut);
    }
person anders dahl    schedule 28.10.2009