2009-06-03 2 views
5

Я когда-то использовал SMTP-почтовую строку командной строки, которая в качестве предела пробной версии позволяла вам получать до 10 писем с ней на сеанс Windows. Если вы перезагрузили компьютер, вы сможете получить еще 10. Я думал, что этот вид условного искажения был довольно опрятным, и я хотел бы воспроизвести его в своем приложении.Как узнать, перезагружен ли компьютер?

Я просто зациклился на том, как это сделать. Я знаю, как ограничить действия пользователя, но как узнать, перезагружен ли компьютер с момента последнего запуска приложения?

ОС - Windows и язык C#.

+3

Что OS и на каком языке? –

+0

Q говорит «сеанс Windows», поэтому кажется безопасным предположить Windows. – Cheeso

+0

os/lang - это Windows/C# – ryeguy

ответ

2

Вы должны иметь возможность находить события в журнале событий, такие как запуск службы журнала событий, который расскажет вам, перезагружен ли компьютер.

Вот как читать журнал событий в 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); 
} 

Примечание: вы должны обеспечить язык и операционную систему вы используете.

2

Если вы используете .NET, для этого вы можете использовать Environment.TickCount. Это дает вам количество мс с момента запуска системы. Обратите внимание, что он перекатывается через ~ 24 дня, поэтому вам придется компенсировать это (если вам интересно).

0

Не могли бы вы просто сохранить счетчик количества событий, которые ваша заявка выполнила. А потом остановитесь, когда счетчик достиг порога? Если ваше приложение содержит службу, оно может быть внедрено как часть службы, которая будет перезапущена с сеансами Windows. Я подозреваю, что так работает SMTP-сервер, по крайней мере, это самый простой способ реализовать что-то подобное. Это заставит большинство начинающих/промежуточных системных администраторов перезапустить коробку, а умные, вероятно, заслуживают бесплатного бесплатного программного обеспечения.

1

Для платформы Windows вы можете использовать uptime.

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

Это приложение для Windows Server? Кажется, у меня это не на WinXP. – ryeguy

+0

Не работает на XP, возможно, в других системах – Anton

2

для Windows, если вы хотите, чтобы проверить компьютер загрузился

Тип на Command Prompt
C:\>net statistics server

Один из статистики будет
Statistics since 22-Jun-11 10:46:20, который был в последний раз компьютер загружен

1

Ответ выше для систем Pre-Windows Server 2008, b ut для Windows 2008 гораздо проще найти время безотказной работы для сервера Windows 2008.

  • Task Manager> Производительность> Up Time

Task Manager