Go Premium for a chance to win a PS4. Enter to Win

x
?
Solved

obtaining the last boot timestamp

Posted on 2003-10-31
5
Medium Priority
?
641 Views
Last Modified: 2013-12-03
The following code will give me the last boot timestamp.  Is there a C API call or registry location where I can get this info?

On Error Resume Next
strComputer = "."
'strComputer = "useaihp348"
'strComputer = "ihp130"
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") Set colItems = objWMIService.ExecQuery("Select * from
Win32_OperatingSystem",,48)
For Each objItem in colItems
    Wscript.Echo "LastBootUpTime: " & objItem.LastBootUpTime Next

0
Comment
Question by:Kalvyn
  • 3
  • 2
5 Comments
 
LVL 86

Accepted Solution

by:
jkr earned 375 total points
ID: 9658352
The performance counters offer such information via 'Win32_PerfRawData_PerfOS_System' (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wmisdk/wmi/win32_perfrawdata_perfos_system.asp).
0
 
LVL 86

Expert Comment

by:jkr
ID: 9687582
Any feedback?
0
 

Author Comment

by:Kalvyn
ID: 9690474
Using normal counter logic to get the last boot timestamp would be a very complicated way of getting this information.  Plus the current PDH methods for processing counter information is not available on some pre W2K OS levels.  However, this reply did help me track a related way of getting this information.  I changed my search criteria from "last boot" to "up time" per the counter documentation.  This lead me to the QueryPerformanceCounter and QueryPerformanceFrequency calls for getting this counter information via API calls.

So I would give him some points for the help.  BTW, my current code is as follows.


void GetLastBoot()
{
// This procedure:
// -Calculates system up time.  Note that this is not exactly the same as //  reported by SrvInfo but it is within a few seconds. // -Calculates last boot date/time.  Note that if there was an odd number of //  daylight savings time switches since the last boot date, this will be //  one hour off.
  char temp[256];
  long uptime;
  time_t seconds;
  struct tm *local;
  LARGE_INTEGER PerformanceCount;
  LARGE_INTEGER Frequency;

  if (QueryPerformanceCounter(&PerformanceCount))
  {
    if (QueryPerformanceFrequency(&Frequency))
    {
      time(&seconds);
      uptime= PerformanceCount.QuadPart/Frequency.QuadPart;
      seconds= seconds- uptime;
      local= localtime(&seconds);
      sprintf(temp,"%02i/%02i/%04i %02i:%02i:%02i",
                   local->tm_mon+1,
                   local->tm_mday,
                   local->tm_year +1900,
                   local->tm_hour,
                   local->tm_min,
                   local->tm_sec);
      cout << "  LastBoot=" << temp << endl;
      cout << "  SystemUpTime=";
      cout << (uptime/86400) << " Days ";
      cout << (uptime%86400)/3600 << " Hr ";
      cout << ((uptime%86400)%3600)/60 << " Min ";
      cout << uptime%60 << " Sec" << endl;
    }
    else
      cout << "  Error getting last boot (QueryPerformanceFrequency): " <<
GetLastError() << endl;
  }
  else
    cout << "  Error getting last boot (QueryPerformanceCounter): " <<
GetLastError() << endl;
} // end GetLastBoot
0
 

Author Comment

by:Kalvyn
ID: 9690482
jkr, since your reply pointed my college in the right direction i am awarding the points for your response.
0
 
LVL 86

Expert Comment

by:jkr
ID: 9690494
I actually had the uptime in my mind :o)
Thank you!
0

Featured Post

Get free NFR key for Veeam Availability Suite 9.5

Veeam is happy to provide a free NFR license (1 year, 2 sockets) to all certified IT Pros. The license allows for the non-production use of Veeam Availability Suite v9.5 in your home lab, without any feature limitations. It works for both VMware and Hyper-V environments

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

After several hours of googling I could not gather any information on this topic. There are several ways of controlling the USB port connected to any storage device. The best example of that is by changing the registry value of "HKEY_LOCAL_MACHINE\S…
A theme is a collection of property settings that allow you to define the look of pages and controls, and then apply the look consistently across pages in an application. Themes can be made up of a set of elements: skins, style sheets, images, and o…
This is Part 3 in a 3-part series on Experts Exchange to discuss error handling in VBA code written for Excel. Part 1 of this series discussed basic error handling code using VBA. http://www.experts-exchange.com/videos/1478/Excel-Error-Handlin…
We’ve all felt that sense of false security before—locking down external access to a database or component and feeling like we’ve done all we need to do to secure company data. But that feeling is fleeting. Attacks these days can happen in many w…

773 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question