【转】在WinXP下用VC调整系统时间
来源:互联网 发布:国家统计局数据库 编辑:程序博客网 时间:2024/05/05 22:04
前言:
一日,编程急需XP下调整系统时间的代码。最初想上网找吧,省事点,不料诺大一个internet,找个现成的代码居然如此困难(按理说应该有,不过我确实没找到)。只好自己写了,而且在这里贴出来,以便节省大家的时间。
正文:
在Win2000中,调整系统时间很eazy,只要运用如下代码即可。
SYSTEMTIME st;
GetSystemTime(&st); // gets current time
st.wHour = hour; // adjusts hours
st.wMinute = minutes; // and minutes
if (!SetSystemTime(&st)) // sets system time
{
..
}
可是在XP下,直接这样使用的话,你会发现这样做没效果。因为进程缺少相应的权限。这在MSDN中说的很清楚:
SetLocalTime
....
Remarks
The SetLocalTime function enables the SE_SYSTEMTIME_NAME privilege before changing the local time. This privilege is disabled by default.
怎么办呢?其实很简单,XP下关机的代码你有没有?有,那只要把其中修改进程权限的地方稍加改动,把SE_SHUTDOWN_NAME改为SE_SYSTEMTIME_NAME 即可。(没有?看下面的代码,还不快记在小本本上 ^_^)
//XP下调整系统时间的演示
BOOL CSyncTimeDlg::SetSysTime()
{
HANDLE hToken;
TOKEN_PRIVILEGES tkp;
// Get a token for this process.
if (!OpenProcessToken(GetCurrentProcess(),
TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken))
return( FALSE );
// Get the LUID for the shutdown privilege.
LookupPrivilegeValue(NULL, SE_SYSTEMTIME_NAME, //注意,改的就是它
&tkp.Privileges[0].Luid);
tkp.PrivilegeCount = 1; // one privilege to set
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
// Get the shutdown privilege for this process.
AdjustTokenPrivileges(hToken, FALSE, &tkp, 0,
(PTOKEN_PRIVILEGES)NULL, 0);
if (GetLastError() != ERROR_SUCCESS)
return FALSE;
//取得必要权限后,设置系统时间
SYSTEMTIME systm;
::GetLocalTime(&systm); //得到当前的本地时间
systm.wMonth += 1; //作为演示,我们让月份和小时数加1
systm.wHour += 1;
if(0 != ::SetLocalTime(&systm))
{
return TRUE;
}
else
{
return FALSE;
}
转载地址:http://www.cnblogs.com/abiao/articles/256945.html
- 【转】在WinXP下用VC调整系统时间
- jenkins在winxp下时间显示不正确
- VC下获取系统时间
- 转的:在winxp下用mingw编译安装wxwidgets
- 转的:在winxp下用mingw编译安装wxwidgets
- 如何在没有光驱的情况下安装WINXP系统
- 在winXP sp2 系统下安装SQLSERVER2000企业版
- C# 调整系统时间
- linux 调整系统时间
- linux调整系统时间
- 调整系统时间 linux
- 在VC中,系统时间的获取
- 【转】如何在VC++下动态调整水晶报表图片的大小
- 在win2000、winXP下看 **********
- 在win2000、winXP下看 **********
- 在win2000、winXP下看 **********
- winXP下用dxdiag查看系统的软硬件配置信息
- Getoo下用kvm启动Host WinXp系统
- 【原创】试用SAE,搭建个人wordpress博客
- url传值乱码
- 13.56Mhz读卡器天线PCB设计
- 后台 tips
- jsp子页面传值给父页面
- 【转】在WinXP下用VC调整系统时间
- day64_activiti
- 数据结构复习笔记 2
- spring
- 百度面试题:找出数组中出现次数超过一半的数
- 历史上的今天——毛泽东被推选为中央政治局会议主席
- jQuery插件开发
- 【原创】VS2005调用matlab R2010b生成的DLL
- SSH框架/JSP Servlet 从Action中传递数据到JSP页面