Solved

obtaining the last boot timestamp

Posted on 2003-10-31
5
633 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 125 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

How to improve team productivity

Quip adds documents, spreadsheets, and tasklists to your Slack experience
- Elevate ideas to Quip docs
- Share Quip docs in Slack
- Get notified of changes to your docs
- Available on iOS/Android/Desktop/Web
- Online/Offline

Join & Write a Comment

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…
Whether you've completed a degree in computer sciences or you're a self-taught programmer, writing your first lines of code in the real world is always a challenge. Here are some of the most common pitfalls for new programmers.
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…
This video discusses moving either the default database or any database to a new volume.

743 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

Need Help in Real-Time?

Connect with top rated Experts

15 Experts available now in Live!

Get 1:1 Help Now