0

我正在编写一个 Windows 服务来进行家长控制(Visual C++)。

我遇到以下问题:

  • 如何计算 Windows 用户今天登录的时间(时间以小时为单位)
  • 当每天的时间超过指定值(例如 5 小时)时,如何触发用户 Windows 帐户的注销。

任何帮助表示赞赏。
问候!

4

1 回答 1

0

要做到这一点,我认为可能有几种方法。
我认为最简单的方法是使用一个计时器,该计时器可以在服务启动时启动(或者如果放置在启动菜单中,则在您的应用程序启动时启动)。
为此,您可以使用与 WM_TIMER 消息关联的 SetTimer 方法:http:
//msdn.microsoft.com/en-us/library/ms644906 (v=vs.85).aspx

您应该使用 CTime 函数在启动计时器之前获取时间,例如:

CTime t;
t.GetCurrentTime ();
timeAtLaunched=t.GetSecond(); //or GetHour()

之后,您可以在计时器函数中进行类似的 CTime 调用以获得 currentTime 值并计算 currentTime 值和 timeAtLaunched 值之间的差异

如果用户多次连接和断开连接,要在一天中保持连接时间,您应该将差异值保存在文件或注册表中。

要强制注销,您可以使用:

ExitWindowsEx (EWX_SHUTDOWN | EWX_FORCE, SHTDN_REASON_MAJOR_OPERATINGSYSTEM |
  SHTDN_REASON_MINOR_UPGRADE | SHTDN_REASON_FLAG_PLANNED)
于 2011-04-15T07:16:43.573 回答