VC++ 获取Windows系统开机时间
以下提供两种方法获取Windows系统的开机时间
第一种是使用C++的函数,该方法使用当前时间减去系统运行时间,秒级的,偶尔存在1秒的差异
第二种是使用Windows的API,该方法获取到的时间与cmd命令systeminfo获取的时间是一致的,故推荐使用这种方法获取系统开机时间
1、C++
void GetSystemUpTime()
{DWORD iRunTime = GetTickCount();const int Num1 = 1000;const int Num2 = 1900;time_t nowTime;time(&nowTime);time_t systemUpTime = nowTime - (iRunTime / Num1);struct tm * timeInfo;timeInfo = localtime(&systemUpTime);printf("开机时间: %d-%d-%d %02d:%02d:%02d",timeInfo->tm_year + Num2,timeInfo->tm_mon + 1, timeInfo->tm_mday, timeInfo->tmhour, timeInfo->tm_min, timeInfo->tm_sec);
}
2、
#include<stdio.h>
#include<windows.h>
#define NT_SUCCESS(x) ((x)>=0)
const UINT SystemTimeInformation = 3;typedef struct { LARGE_INTEGER liKeBootTime; LARGE_INTEGER liKeSystemTime; LARGE_INTEGER liExpTimeZoneBias; ULONG uCurrentTimeZoneId; DWORD dwReserved;
} SYSTEM_TIME_INFORMATION; typedef long (__stdcall *fnNtQuerySystemInformation)( IN UINT SystemInformationClass, OUT PVOID SystemInformation, IN ULONG SystemInformationLength,
OUT PULONG ReturnLength OPTIONAL); static fnNtQuerySystemInformation NtQuerySystemInformation = NULL;int main(void) { NtQuerySystemInformation = (fnNtQuerySystemInformation)GetProcAddress(LoadLibrary("ntdll.dll"), "NtQuerySystemInformation"); if(NtQuerySystemInformation == NULL) { printf("Get NtQuerySystemInformation Addr Failed,err=%u\n",GetLastError()); return 0; } LONG status; SYSTEM_TIME_INFORMATION sti; status = NtQuerySystemInformation(SystemTimeInformation, &sti,sizeof(sti),0); if(NO_ERROR != status) { printf("NtQuerySystemInformation Failed!n"); return 0; } FILETIME ft1,ft2; SYSTEMTIME st; memcpy_s(&ft1, sizeof(ft1),&sti.liKeBootTime,sizeof(sti.liKeBootTime)); //将其转为文件时间 //将一个FILETIME结构转换成本地时间 if(0 == FileTimeToLocalFileTime(&ft1,&ft2)) {printf("FileTimeToLocalFileTime Failed err=%u\nn",GetLastError()); return 0; } //将文件时间转为系统时间if(0 == FileTimeToSystemTime(&ft2,&st)) {printf("FileTimeToSystemTimeFailed err=%u\nn",GetLastError()); return 0; } printf("Date: %02d-%02d-%04d Time: %02d:%02d:%02d ",st.wMonth,st.wDay,st.wYear, st.wHour,st.wMinute,st.wSecond); getchar(); return 0;
}
参考:
https://www.cnblogs.com/fengbohello/p/4277082.html
https://blog.csdn.net/cxq_1993/article/details/48024193
VC++ 获取Windows系统开机时间相关推荐
- VC++ 获取Windows系统标准字体方法
获取系统字体常用方法如下: LOGFONT lf = { 0 }; ::GetObject(::GetStockObject(DEFAULT_GUI_FONT), sizeof(LOGFONT), & ...
- C# 获取系统开机时间
C# 获取系统开机时间 原文:C# 获取系统开机时间 /// /// 获取系统开机时间 /// /// private DateTi ...
- python加密狗的制作_如何使用U盘制作Windows系统开机加密狗图文教程
U盘等移动设备除了可以用来储存文件,装系统以外,还可以用来制作加密狗.这篇文章中所指的加密狗仅指针对Windows系统开机的加密狗.它的作用是为了避免他人随便开启自己的电脑查看自己的私密信息,除了设置 ...
- w7查看计算机每天开关机时间,win7系统开机时间怎么看?查看win7开机时间的方法...
一位用户询问小编 windows7操作系统 电脑明明昨天已经关机了,但是第二天起来的时候,发现电脑还是开着的,这是怎么回事呢?很多用户都在为此问题困惑.其实大家可以查看电脑开机时间,就知道大体的情况了 ...
- 通过PowerShell获取Windows系统密码Hash
当你拿到了系统控制权之后如何才能更长的时间内控制已经拿到这台机器呢?作为白帽子,已经在对手防线上撕开一个口子,如果你需要进一步扩大战果,你首先需要做的就是潜伏下来,收集更多的信息便于你判断,便于有更大 ...
- 这段百度问答,对我相关有对啊!!!----如何获取Windows系统登陆用户名
如何获取Windows系统登陆用户名 http://zhidao.baidu.com/link?url=Hva9PkVwYZv8KSEWftSqTWe8fqM1dhoq59BurnfADmcOvFjF ...
- Unity实现获取Windows系统声音并实现可视化
效果 简介 该项目通过使用CSCore.dll来获取Windows系统声音的输出.并使用Rhythm Visualizator Pro 2.2b插件来实现上面的效果. 脚本简介(这里就只介绍一些重要的 ...
- 设置服务器虚拟机定时开机,windows系统开机设置VMware虚拟机自动启动虚拟机项目...
摘要:很多用windows系统电脑开发的童鞋,会在自己电脑上装一个虚拟机,然后在装一个linux系统当作服务器来使用.但每次电脑开机都要去重启一下虚拟机电源,实在是不划算.下面教大家在windows系 ...
- windows 系统开机后-按键盘上的字母会出现数字-如何解决
windows 系统开机后-按键盘上的字母会出现数字-如何解决 原因:你的注册表有问题了:1.首先打开注册表(也可以在开始-->运行-->输入regedit 直接打开) 2 ...
最新文章
- Oracle 存储过程 无法编译 解决方法(转载)
- 某程序员吐槽:组里新来一位美女同事,男同事们冲上去大献殷勤,过几天又一哄而散!...
- python 添加环境变量_python永久添加环境变量
- 从svn下载项目后build path为灰色
- 深度学习核心技术精讲100篇(二十三)-深度学习系列计算广告与推荐系统有哪些区别?使用的主流模型有哪些?
- hdu 3579(中国剩余定理非互质)
- Android Camera的进化史
- protel布线需要注意事项
- linux内核模块实验,linux内核模块实验(2学时).doc
- sql2018 ssas_如何使用SQL Server Analysis Services(SSAS)从头开始构建多维数据集
- 图像处理之超像素分割(SLIC)
- 应急管理大数据ppt_大数据应急管理.doc
- 微型四轴飞行器(3)嵌入式软件设计
- 基于ThinkPHP的图书馆管理系统 毕业设计-附源码311833
- handsome主题添加服务器信息,handsome主题时光机微信发送系统
- 硬核接亲!程序员被新娘要求现场写代码,结果万万没想到……
- Linux 英伟达驱动手动安装详细教程(图文)
- k8s 服务注册与发现(二)Kubernetes内部域名解析原理
- 聚合供应链,Saas系统
- IOS之 上传App预览和截屏规范