发新话题
打印

[原创]SetTime

[原创]SetTime

文章作者:xuanliang[E.S.T]
信息来源:邪恶八进制 中国
复制内容到剪贴板
代码:
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>

int ShowError( const char *pErrMsg, DWORD dwErrorCode )
{
     LPVOID lpMsgBuf;

     FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
             NULL, dwErrorCode,
                     MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
                     (LPTSTR)&lpMsgBuf, 0, NULL );
                     
     printf("%s %s\r\n", pErrMsg, lpMsgBuf );
     LocalFree( lpMsgBuf );
     
     return 0;
}

//提升权限
BOOL AdjustPrivilege(LPCTSTR privilege, DWORD attribute)
{
     BOOL ret;
     HANDLE procToken;
     LUID luid;      
     TOKEN_PRIVILEGES tp;

      ret = OpenProcessToken(GetCurrentProcess(),
                      TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY,
                      &procToken);
     if(!ret)
     {
        ShowError("\r\nFail to OpenProcessToken.", GetLastError() );
        return false;
      }

      ret = LookupPrivilegeValue(NULL, privilege, &luid);
     if(!ret)
     {
        CloseHandle(procToken);
        ShowError("\r\nFail to LookupPrivilegeValue.", GetLastError() );
        return false;
     }

     tp.PrivilegeCount = 1;
     tp.Privileges[0].Luid = luid;
     tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;

     AdjustTokenPrivileges(procToken, FALSE, &tp, NULL, NULL, NULL);
     if (GetLastError() != ERROR_SUCCESS)
     ret = false;
      else
     ret =true;

     CloseHandle(procToken);
     return (ret);
}

void DumpTimeStruct(LPSYSTEMTIME st)
{
     printf("\r\nYear : %-10d", st->wYear);
     printf("\r\nMonth : %-10d ", st->wMonth);
     printf("\r\nDay of Week : %-10d ", st->wDayOfWeek);
      printf("\r\nDay : %-10d ", st->wDay);
     printf("\r\nHour : %-10d ", st->wHour);
     printf("\r\nMinute : %-10d ", st->wMinute);
     printf("\r\nSecond : %-10d ", st->wSecond);
     printf("\r\n----------------------");
}

void Usage(char *msg)
{
     printf("|-------------------------------|\n");
     printf("|    SetTime            |\n");
     printf("|                     |\n");
     printf("|    2005.1.22           |\n");
     printf("|-------------------------------|\n");
     printf("usage: %s\n",msg);
     //printf("       -ctime\n");
     printf("       -stime [year]\n");
     return;
}

int main(int argc, char *argv[])
{
   SYSTEMTIME st;

   if (argc != 3)
   {
          Usage(argv[0]);
          return 0;
   }
/*
   if(stricmp(argv[1], "-ctime")==0)
     {
     */
   GetLocalTime(&st);
   printf("Current time: ");
   DumpTimeStruct(&st);
//  return 0;
//     }

   if(stricmp(argv[1], "-stime") == 0)
   {
     
     DWORD Year = atoi(argv[2]);
     st.wYear = Year;
   
     if (!AdjustPrivilege(SE_SYSTEMTIME_NAME, SE_PRIVILEGE_ENABLED))
      {
      ShowError("\r\nFail to AdjustPrivilege.", GetLastError() );
     return FALSE;
      }

     if (!SetLocalTime(&st))
     {
     ShowError("\r\nFail to SetLocalTime.", GetLastError() );
     return FALSE;
     }

     GetLocalTime(&st);
     printf("\r\nNew Current time: \r\n");
     DumpTimeStruct(&st);
     return 0;
   }
return 0;
}

TOP

Ness是谁呀?
帮你在文章上打上标识了 保护自己的版权 很多人转载文章 如果没有作者 就不写的
qq310926是我唯一用号,除此之外有其他号码号自称邪八冰血封情,则非本人。

TOP

it is me :)

一言难尽了。没人知道。呵呵。也不想太多人知道。

程序写得很垃圾。署名有点怕了。。

TOP

引用:
下面是引用xuanliang于2005-01-24 02:12发表的:
it is me :)

一言难尽了。没人知道。呵呵。也不想太多人知道。

程序写得很垃圾。署名有点怕了。。
插!
qq310926是我唯一用号,除此之外有其他号码号自称邪八冰血封情,则非本人。

TOP

xuanliang现在还在学校么?还是已经回家了...?
我下午回学校 大家聚会一下吧 下个学期我就要没命的忙了....
qq310926是我唯一用号,除此之外有其他号码号自称邪八冰血封情,则非本人。

TOP

下学期再聚吧.我马上就闪了 :)

希望大家可以帮我保守这个秘密.

xuanliang != Ness  

thx!

TOP

引用:
下面是引用xuanliang于2005-01-24 18:05发表的:
下学期再聚吧.我马上就闪了 :)

希望大家可以帮我保守这个秘密.

xuanliang != Ness  
.......
偶不知道!哈哈!
广告位招商! 联系人:neeao E-Mail:neeaocn(at)gmail.com Msn:neeao@hotmail.com Site:http://www.neeao.com

TOP

发新话题