2009-05-06 5 views
1

J'essaie de configurer un travail "AT" pour exporter certaines clés de registre sur un ordinateur distant, le problème est que la commande DOS nécessite un certain temps pour s'exécuter. Je veux obtenir l'heure du système de l'ordinateur distant afin que je puisse le programmer pour courir 1 minute à partir du moment où j'envoie la commande.VB.net 2005 obtenir l'heure du système d'un ordinateur distant?

Y at-il un moyen d'obtenir l'heure système d'un ordinateur distant avec le code VB.Net?

+0

J'ai ajouté un exemple de code à ma réponse. C'est C#, mais devrait être facile à convertir en VB –

Répondre

0

Vous pouvez utiliser:

net time \\computer_name 

Vous aurez juste besoin de débourser pour cela et analyser le résultat.


Voici un exemple de code. C'est en C#, mais devrait être assez facile à traduire.

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

Je ne l'ai pas pris la peine d'ajouter une gestion des erreurs (si la machine ne se trouve pas, etc) - vous pouvez ajouter à tout ce que vous avez besoin pour répondre à vos besoins.

+0

Merci! Pouvez-vous me donner un exemple de comment analyser le résultat, je ne sais pas comment le faire. –

+0

Édité pour inclure l'exemple de code –

+0

obtenir et erreur avec StandardOutput.Readline StandardOut n'a pas été redirigé ou le processus n'a pas encore commencé. une idée de ce que cela signifie? affichera mon code si vous avez besoin de le voir. merci encore pour votre aide! –

1

ici est ce que je dois travailler, merci pour votre aide 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) 
0

..et Maby faire un petit chèque si vous utilisez

... 
    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); 
    } 
Questions connexes