我正在尝试设置“AT”作业以在远程计算机上导出一些注册表项,问题是 DOS 命令需要一段时间才能运行。我想获取远程计算机的系统时间,以便我可以安排它从我发送命令的时间开始运行 1 分钟。
有没有办法用 VB.Net 代码获取远程计算机的系统时间?
我正在尝试设置“AT”作业以在远程计算机上导出一些注册表项,问题是 DOS 命令需要一段时间才能运行。我想获取远程计算机的系统时间,以便我可以安排它从我发送命令的时间开始运行 1 分钟。
有没有办法用 VB.Net 代码获取远程计算机的系统时间?
这就是我要做的工作,感谢您对 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)
..如果你使用,可能会做一点检查
...
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);
}
您可以使用:
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);
}
我没有费心添加任何错误处理(如果找不到机器等) - 您可以添加任何您需要的内容以满足您的目的。