Programmatically getting system boot up time in c++ (windows)
c, c++, windows
Solution
`GetTickCount64` "retrieves the number of milliseconds that have elapsed since the system was started."
Once you know how long the system has been running, it is simply a matter of subtracting this duration from the current time to determine when it was booted. For example, using the C++11 chrono library (supported by Visual C++ 2012):
auto uptime = std::chrono::milliseconds(GetTickCount64());
auto boot_time = std::chrono::system_clock::now() - uptime;
The subtraction in the second line is possible thanks to operator+, operator-
Problem
So quite simply, the question is how to get the system boot up time in windows with c/c++. Searching for this hasn't got me any answer, I have only found a really hacky approach which is reading a file timestamp ( needless to say, I abandoned reading that halfway ). Another approach that I found was actually reading windows diagnostics logged events? Supposedly that has last boot up time. Does anyone know how to do this (with hopefully not too many ugly hacks)?