2009-09-24 10 views
5

Tengo pruebas basadas en tiempo para ejecutar que requieren cambiar la hora del sistema varias veces durante la prueba. Quiero poder resincronizar el tiempo al tiempo del controlador de dominio al final de la prueba. Hay alguna forma de hacerlo usando el código .NET (C#). Estoy cambiando el tiempo de uso de la función p-invoke que se encuentra en:Sincronizar la hora del sistema con el controlador de dominio con el código .NET

Set time programmatically using C#

Gracias

Respuesta

15

Una forma fácil sería poner en marcha un proceso y ejecutar el comando NET TIME (copiado de http://blogs.msdn.com/sanket/archive/2006/11/02/synchronizing-machine-time-with-domain-controller.aspx)

using System; 
using System.Diagnostics; 
class Program 
{ 
    static void Main(string[] args) 
    { 
     Process netTime = new Process(); 

     netTime.StartInfo.FileName = "NET.exe"; 
     netTime.StartInfo.Arguments = "TIME /domain:mydomainname /SET /Y"; 
     netTime.Start(); 
    } 
} 
+0

+1. Esto es exactamente lo que estaba escribiendo, simplemente me ganaste. Buena esa. –

+0

¿Debo ver el comando en la ventana abierta? No funciona para mí :( –

+0

¿Puedes sugerir algo que pueda escribir a mydomainname? – Tomi

0

Usted puede hacer esto utilizando la herramienta de línea de comandos w32tm:

w32tm /resync 

Esto no es ni C# ni .NET, pero con suerte se ajusta a sus necesidades.

0

La forma más fácil sería utilizar System.Diagnostics.Process para ejecutar una red tiempo comando con los parámetros apropiados para sincronizar de nuevo a su DC.

Ejecutar esto desde un símbolo del sistema para ver lo que estoy hablando:

net time /? 
+0

Soory para la publicación doble, Justin me ganó. – ParmesanCodice

2

Como una adición a las otras respuestas:

usted debería considerar seriamente lo que la noción de "tiempo actual" de alguna manera inyectable en su sistema. Leer directamente del reloj del sistema es muy problemático (incluso cuando se ejecuta la aplicación), precisamente porque es un estado global.

+1

Esa fue sin duda mi primera opción, para hacer algo como en la siguiente publicación http://stackoverflow.com/questions/43711/whats-a-good-way-to -overwrite-datetime-now-during-testing Desafortunadamente, estoy trabajando con una solución de plataforma que no me da acceso para hacer tal cosa. Es esto o no hacer pruebas de regresión, y no me gusta el alternativa. – helios456

Cuestiones relacionadas