1

我正在尝试设置“AT”作业以在远程计算机上导出一些注册表项,问题是 DOS 命令需要一段时间才能运行。我想获取远程计算机的系统时间,以便我可以安排它从我发送命令的时间开始运行 1 分钟。

有没有办法用 VB.Net 代码获取远程计算机的系统时间?

4

3 回答 3

1

这就是我要做的工作,感谢您对 Jon B 的所有帮助。

    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)
于 2009-05-06T20:56:45.103 回答
0

..如果你使用,可能会做一点检查

    ...
    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);
    }
于 2009-10-28T09:51:54.250 回答
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);
    }

我没有费心添加任何错误处理(如果找不到机器等) - 您可以添加任何您需要的内容以满足您的目的。

于 2009-05-06T19:24:33.063 回答