Windows好像没有提供直接获得开机时间的API,所以原来的想法就是把自己写的程序当作Windows服务,开机就运行,然后记录下时间作为开机时间。后来偶然发现Windows提供了下面的API:
DWORD GetTickCount(void);
对于返回值的说明:
The return value is the number of milliseconds that have elapsed since the system was started.
就是返回自从Windows启动到目前为止的毫秒(0.001秒)数。由于字长限制,最多只能返回49.7天的时间(有能运行这么长时间的Windows么……)。
然后我们就可以通过别的API函数得到目前的时间,然后通过简单的运算得到开机时间了。
BTW:偶然发现COleDateTime类里也有静态GetTickCount函数,但是msdn上没说,仔细一看原来有个宏把GetTickCount函数define成GetCurrentTime……害得我纳闷了好久。看来宏果然不是个好东西……