直接用98的方法(SetLocalTime或SetSystemTime)是不管用的了.它需要一个什么令牌。我尝试了,还是不行,不过关机是可以的。    我的身份是管理员,代码如下:
    SYSTEMTIME systime;        //改变本机时间
    systime.wYear=2000;systime.wMonth=5;systime.wDay=4;
    systime.wHour=10;systime.wMinute=5;systime.wSecond=45;    HANDLE hToken;    TOKEN_PRIVILEGES tkp;
    if(!OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY,&hToken))
    {MessageBox("1错了");return;}
    LookupPrivilegeValue(NULL,SE_SHUTDOWN_NAME,&tkp.Privileges[0].Luid);
    tkp.PrivilegeCount=1;
    tkp.Privileges[0].Attributes=SE_PRIVILEGE_ENABLED;
    AdjustTokenPrivileges(hToken,false,&tkp,0,(PTOKEN_PRIVILEGES)NULL,0);
    if(GetLastError()!=ERROR_SUCCESS)
    {MessageBox("2错了");return;}    ::SetLocalTime(&systime);//这里返回的结果是false,也就是修改失败
           
    tkp.Privileges[0].Attributes=0;
    AdjustTokenPrivileges(hToken,false,&tkp,0,(PTOKEN_PRIVILEGES)NULL,0);
    if(GetLastError()!=ERROR_SUCCESS)
    {MessageBox("4错了");return;}