2009-06-03 11 views
5

Una vez usé un programa de correo electrónico SMTP que, como límite de la versión de prueba, le permitía recibir hasta 10 correos electrónicos por sesión de Windows. Si reinició su computadora, podría recibir 10 más. Pensé que este tipo de shareware paralizante era bastante limpio, y me gustaría replicarlo en mi aplicación.¿Cómo puedo saber si la computadora se ha reiniciado?

Simplemente estoy atascado en cómo hacerlo. Sé cómo limitar las acciones del usuario, pero ¿cómo puedo saber si la computadora se ha reiniciado desde la última vez que se ejecutó la aplicación?

El sistema operativo es Windows y el idioma es C#.

+3

¿Qué sistema operativo y qué idioma? –

+0

Q dice "sesión de Windows", por lo que parece seguro asumir Windows. – Cheeso

+0

os/lang es Windows/C# – ryeguy

Respuesta

2

Debería poder encontrar eventos en el registro de eventos, como el inicio del servicio de registro de eventos que le indicaría si la computadora se ha reiniciado.

Así es como leer el registro de eventos en C#: http://msdn.microsoft.com/en-us/library/k6b9a7h8%28VS.71%29.aspx

// C# 
foreach (System.Diagnostics.EventLogEntry entry in EventLog1.Entries) 
{ 
    Console.WriteLine(entry.Message); 
} 

Nota: se debe proporcionar el idioma y el sistema operativo que esté utilizando.

2

Si está utilizando .NET, puede usar Environment.TickCount para esto. Esto le da la cantidad de ms desde que el sistema comenzó. Tenga en cuenta que rueda cada ~ 24 días, por lo que tendrá que compensar eso (si le importa).

0

¿No podría simplemente mantener un contador de la cantidad de eventos que ha realizado su aplicación. Y luego detener cuando el contador alcanzó el umbral? Si su aplicación contiene un servicio, podría incorporarse como parte del servicio que se reiniciaría con las sesiones de Windows. Sospecho que así es como funcionaba el servidor SMTP, al menos esa es la forma más sencilla en que implementaría algo así. Se mantendría a la mayoría de los administradores de sistemas novatos/intermedios reiniciando la caja, y los inteligentes probablemente se merecen tener el software gratis de todos modos.

1

Para plataforma Windows puede usar uptime.

C:\>uptime 
\\SPOCK has been up for: 2 day(s), 0 hour(s), 45 minute(s), 34 second(s) 
+1

¿Es esta una aplicación de servidor de Windows? No parece tener esto en WinXP. – ryeguy

+0

No funciona en XP posiblemente otros sistemas – Anton

2

En Windows, si desea comprobar el ordenador arranca

Tipo en el símbolo del sistema
C:\>net statistics server

Una de las estadísticas habrá
Statistics since 22-Jun-11 10:46:20 que fue la última vez que el computadora arrancada

1

La respuesta anterior es para sistemas Pre-Windows Server 2008, b ut para Windows 2008 hay una manera mucho más fácil de encontrar el tiempo de actividad para un servidor de Windows 2008.

  • Administrador de tareas> Rendimiento> Tiempo de

Task Manager

Cuestiones relacionadas