如何在Qt中更改Windows系统时间?

时间:2015-12-13 07:55:05

标签: c++ windows qt winapi time

我想更改系统时间,如何在Qt中更改Windows系统时间? 我用这种方式,但失败了!

#include <QApplication>
#include <iostream>
#include <time.h>
#include <windows.h>
#include <QDateTime>
#include <QDebug>
using namespace std;
bool setDate(int,int,int);      
int main(int argc, char *argv[])
{
   QApplication a(argc, argv);
   MainWindow w;
   w.show();
   qDebug()<<QDateTime::currentDateTime()<<endl;    //before change time                        
   if(setDate(2015,1,1))                           //set time
   {
     qDebug()<<QDateTime::currentDateTime()<<endl;  //if succeed,output time
   }  
   return a.exec();
}
bool setDate(int year,int mon,int day)
{
   SYSTEMTIME st;
   GetSystemTime(&st);    // Win32 API get time
   st.wYear=year;         //set year
   st.wMonth=mon;         //set month
   st.wDay=day;           //set day

  return SetSystemTime(&st);    //Win32 API set time
 }

提前谢谢。

1 个答案:

答案 0 :(得分:3)

更改系统时间需要管理员权限。这意味着您需要:

  • requireAdministrator选项添加到清单中,以便程序始终具有管理员权限。这是一个坏主意,每次启动时都不会享受UAC对话。
  • 或者,通过启动以管理员身份运行的单独进程来更改时间。具有相应清单的另一个可执行文件,一个以runas shell谓词开头的进程,或一个以COM高程名字对象开头的进程。

如果这对您来说是个gobbledygook,您需要阅读UAC。从这里开始:https://msdn.microsoft.com/en-us/library/windows/desktop/dn742497(v=vs.85).aspx