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

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

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

Ответы [ 3 ]

1 голос
/ 07 мая 2009

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

    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)
0 голосов
/ 28 октября 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);
    }
0 голосов
/ 06 мая 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);
    }

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

...