取得windows系统开机日期和时间

    很简单,原生态函数NtQuerySystemInformation已经为我们提供了这个功能,

虽然不那么优雅 :)

#include	<stdio.h>
#include	<stdbool.h>
#include	<windows.h>

#define NT_SUCCESS(x) ((x)>=0)
#define 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!\n");
		exit(-1);
	}

	LONG status;
	SYSTEM_TIME_INFORMATION sti;

	status = NtQuerySystemInformation(SystemTimeInformation,\
		&sti,sizeof(sti),0);

	printf("boot time (ms) == %I64X\n",sti.liKeBootTime.QuadPart);

	/*if(!NT_SUCCESS(status))
	{
		printf("NtQuerySystemInformation Failed!\n");
		goto quit;
	}*/

	if(NO_ERROR != status)
	{
		printf("NtQuerySystemInformation Failed!\n");
		exit(-1);
	}

	FILETIME ft;
	SYSTEMTIME st;
	memcpy(&ft,&sti.liKeBootTime,sizeof(ft));
	FileTimeToLocalFileTime(&ft,&ft);
	FileTimeToSystemTime(&ft,&st);

	printf("Date: %02d-%02d-%04d\nTime: %02d:%02d:%02d\n",st.wMonth,st.wDay,st.wYear,\
		st.wHour,st.wMinute,st.wSecond);

	getchar();
	return 0;
}
时间: 2012-11-30

取得windows系统开机日期和时间的相关文章

win8.1系统开机黑屏时间过长怎么解决

  win8.1系统开机黑屏时间过长怎么解决 把系统的字体缓存服务windows font cache service设置成开机自动启动. 方法一 1.打开运行--输入services.msc,找到WINDOWS FONT CACHE SERVICE; 2.右击选择属性,选择开启方式为自动,确定!然后右击开启即可. 方法二 1.右击鼠标[这台计算机]-[属性]-[管理]-[服务和应用程序]-[服务]; 2.在窗口内找到[WINDOWS FONT CACHE SERVICE]项目,将其启动类型修改

windows系统开机出现supervisory.exe错误的解决方法

  相信很多使用Win7系统的新老客户不管是曾经还是现在,都同样遇到过这样的一个情况,电脑开机后弹出supervisory.exe应用程序错误的提示框,立刻让自己傻了眼,真的是让人特别烦躁,不知道是点确定还是不确定好.点击确定后,电脑又恢复正常.如果点击不确定不知道会出现什么问题.中间耽误自己的时间以及降低办事的效率,真的让人头疼不已.那这到底是什么问题呢?要怎么解决呢?以下就是supervisory.exe应用程序错误的提示框的解决方案.一定要牢记于心啊! supervisory.exe是什么

Windows7系统更改日期、时间和数字格式图文教程

  1.首先点击进入"控制面板"并点击"时钟.语言和区域". 2.点击"更改时间.日期或数字格式". 3.选择"格式"选项卡,在日期和时间格式中选择对应的下拉菜单对时间.日期的格式进行修改,修改后的结果可以在下边的示例中看到,若要进行详细的修改可以选择下方的"其它设置". 4.进入自定义格式进行更详细的修改,例如修改"AM"符号为"上午","PM符号为下午&

Windows系统开机方法合集

  方法一:设置定时开机 主板上有实时时钟(Real Time Clock,RTC)负责系统的计时,我们可以通过RTC指定开机的时间,就像闹钟一样.不过,由于这项功能很少被人使用,部分虽然提供了此功能的主板(如INTEL原装主板)其实并不能在指定时间开机,所以用户在正式使用前最好先进行测试. 具体操作方式为: 1.电脑开机之后根据屏幕上的提示信息按"Del"键进入主板BIOS设置画面,与定时开机有关的设置功能一般放在"Power Management Setup"选

win7旗舰版系统开机出现“Windows找不到文件或没有关联的程序”

  一般来说,咱们等待Windows系统开机都是需要一定的时间的,win7 64位旗舰版也是一样的,这些时间咱们的电脑都用来干嘛了呢?除了启动一些开机启动项之外,其实咱们的Windows系统还会对自身做一个检测,看Windows系统是否是完全启动起来的,如果在启动的过程中遇到什么故障的话,则会给出相应的提示窗口,这不,今天就有使用win7旗舰版系统的用户在电脑开机的时候收到了"Windows找不到文件或没有关联的程序"的错误提示,那么这个问题,咱们要如何解决呢?下面,小编就来详细的介绍

如何禁止修改android手机系统日期和时间

问题描述 如何禁止修改android手机系统日期和时间 最近写了一个应用,需要记录当前时间和日期,为了避免用户手动设定系统的日期和时间,如何禁止用户修改系统的日期和时间?请各位大侠指点,谢谢! 解决方案 Calendar---android 中系统日期时间的获取android 手机系统日期及时间的读取android 中 系统日期时间的获取

如何在Word 2013文档中插入日期和时间

用户可以根据实际需要在Word2013文档中插入日期和时间,并且由于所插入的日期和时间代码是从系统中调用的,因此可以在每次打开该Word文档时自动更新时间,或者只在需要更新时间时进行手动更新.在Word2013文档中插入日期和时间的步骤如下所述: 第1步,打开Word2013文档窗口,且换到"插入"功能区.将插入点光标定位到需要插入日期和时间的位置(正文任意位置或页眉页脚中),然后在"插入"区域单击"日期和时间"按钮,如图2013072832所示

Word2013中加入日期和时间的技巧

  大多数人对于Word的使用,都是比较娴熟的.但很多的朋友仅仅只是局限在对文档的编辑,而对于什么页眉页脚的设置,都很陌生,比如说要在文档中插入日期和时间,估计难倒一大批人了吧!今天,小编就特别来为大家讲述一下,在Word2013中加入日期和时间的技巧. 第1步,打开Word2013文档窗口,且换到"插入"功能区.将插入点光标定位到需要插入日期和时间的位置(正文任意位置或页眉页脚中),然后在"插入"区域单击"日期和时间"按钮,如图1所示. 图1单

怎样在Word2013文档中插入日期和时间

  第1步,打开Word2013文档窗口,且换到"插入"功能区.将插入点光标定位到需要插入日期和时间的位置(正文任意位置或页眉页脚中),然后在"插入"区域单击"日期和时间"按钮,如图1所示. 图1单击"日期和时间"按钮 第2步,打开"日期和时间"对话框,在"可用格式"列表中选择合适的日期或时间格式,也可以选择日期和时间的组合格式.如果选中"自动更新"复选框,则可以在每