2009-05-06 8 views
1

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

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

+0

Я добавил пример кода мой ответ. Это C#, но должно быть легко конвертировать в VB –

ответ

0

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

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); 
    } 

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

+0

Спасибо! Можете ли вы дать мне пример того, как анализировать результат, не знаете, как это сделать. – 2009-05-06 19:28:50

+0

Отредактировано, чтобы включить пример кода –

+0

Получение и ошибка с помощью StandardOutput.Readline StandardOut не перенаправлен или процесс еще не запущен. любая идея, что это значит? опубликует мой код, если вам нужно его увидеть. Еще раз спасибо за вашу помощь! – 2009-05-06 20:37:34

1

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

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

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

... 
    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); 
    } 
Смежные вопросы