我正在编写一个 Windows 服务来进行家长控制(Visual C++)。
我遇到以下问题:
- 如何计算 Windows 用户今天登录的时间(时间以小时为单位)
- 当每天的时间超过指定值(例如 5 小时)时,如何触发用户 Windows 帐户的注销。
任何帮助表示赞赏。
问候!
我正在编写一个 Windows 服务来进行家长控制(Visual C++)。
我遇到以下问题:
任何帮助表示赞赏。
问候!
要做到这一点,我认为可能有几种方法。
我认为最简单的方法是使用一个计时器,该计时器可以在服务启动时启动(或者如果放置在启动菜单中,则在您的应用程序启动时启动)。
为此,您可以使用与 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)