我曾经使用过一个命令行 SMTP 邮件程序,作为试用版的限制,它允许您在每个 Windows 会话中接收多达 10 封电子邮件。如果您重新启动计算机,您可以再收到 10 个。我认为这种共享软件瘫痪非常简洁,我想在我的应用程序中复制它。
我只是坚持如何去做。我知道如何限制用户的操作,但我如何知道自上次运行应用程序后计算机是否已重新启动?
操作系统是 Windows,语言是 C#。
对于 Windows,如果要检查计算机已启动
在命令提示符上键入
C:\>net statistics server
其中一项统计数据
Statistics since 22-Jun-11 10:46:20
是计算机上次启动的时间
您应该能够在事件日志中找到事件,例如事件日志服务启动会告诉您计算机是否已重新启动。
以下是在 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);
}
注意:您应该提供您正在使用的语言和操作系统。
如果您使用的是 .NET,则可以为此使用Environment.TickCount 。这为您提供了自系统启动以来的毫秒数。请注意,它每 24 天滚动一次,因此您必须对此进行补偿(如果您关心的话)。
对于 Windows 平台,您可以使用uptime。
C:\>uptime
\\SPOCK has been up for: 2 day(s), 0 hour(s), 45 minute(s), 34 second(s)
上面的答案适用于 Windows Server 2008 之前的系统,但对于 Windows 2008,有一种更简单的方法可以找到 Windows 2008 服务器的正常运行时间。
难道你不能只记录你的应用程序执行的事件数。然后在计数器达到阈值时停止?如果您的应用程序包含服务,那么它可以作为服务的一部分嵌入,该服务将通过 Windows 会话重新启动。我怀疑这就是 SMTP 服务器的工作方式,至少这是我实现类似功能的最简单方法。它会让大多数新手/中级系统管理员重新启动机器,而聪明的人可能无论如何都应该免费拥有该软件。