2009-06-03 15 views
5

Kiedyś użyłem programu pocztowego SMTP w linii poleceń, który jako limit wersji próbnej, pozwolił na otrzymanie do 10 wiadomości e-mail z nim na sesję Windows. Po ponownym uruchomieniu komputera możesz otrzymać kolejne 10. Sądziłem, że ten rodzaj shareware'owania jest całkiem zadowalający i chciałbym go powtórzyć w mojej aplikacji.Jak sprawdzić, czy komputer został ponownie uruchomiony?

Po prostu utknąłem, jak to zrobić. Wiem, jak ograniczyć działania użytkownika, ale jak mogę sprawdzić, czy komputer został ponownie uruchomiony od ostatniego uruchomienia aplikacji?

System operacyjny to Windows, a język to C#.

+3

Co OS i jakim języku? –

+0

Q mówi "sesja Windows", więc bezpiecznie można założyć system Windows. – Cheeso

+0

os/lang to Windows/C# – ryeguy

Odpowiedz

2

Powinieneś być w stanie znaleźć zdarzenia w dzienniku zdarzeń, takie jak uruchomienie usługi dziennika zdarzeń, które powie Ci, czy komputer został uruchomiony ponownie.

Oto jak czytać dziennik zdarzeń w języku 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); 
} 

Uwaga: należy podać języka i systemu operacyjnego używasz.

2

Jeśli używasz .NET, możesz użyć do tego celu Environment.TickCount. Daje to liczbę ms od czasu uruchomienia systemu. Zwróć uwagę, że przewija się co ~ 24 dni, więc będziesz musiał to zrekompensować (jeśli ci na tym zależy).

0

Nie można po prostu zachować licznika liczby zdarzeń wykonanych przez aplikację. A potem przestać, gdy licznik osiągnie próg? Jeśli aplikacja zawiera usługę, może zostać osadzona jako część usługi, która zostanie uruchomiona ponownie w sesjach systemu Windows. Podejrzewam, że tak działa serwer SMTP, przynajmniej jest to najprostszy sposób, w jaki mógłbym coś takiego wprowadzić. Uniemożliwiłoby to większości początkującym/pośrednim administratorom systemu restartowanie skrzynki, a sprytni prawdopodobnie i tak zasługują na to, by mieć oprogramowanie za darmo.

1

W przypadku platformy Windows można użyć uptime.

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

Czy to jest aplikacja Windows Server? Wydaje się, że nie mam tego na WinXP. – ryeguy

+0

Nie działa na XP, prawdopodobnie w innych systemach – Anton

2

Dla systemu Windows, jeśli chcesz sprawdzić, czy komputer uruchomiony

Type na wiersza polecenia
C:\>net statistics server

Jednym statystykach będzie
Statistics since 22-Jun-11 10:46:20 który był ostatnim razem komputer rozruchowy

1

Powyższa odpowiedź dotyczy systemów z systemem Pre-Windows Server 2008, b ut dla Windows 2008 jest znacznie łatwiejszy sposób na znalezienie czasu bezczynności dla serwera Windows 2008.

  • Menedżer zadań> Performance> Up Time

Task Manager

Powiązane problemy