SetLocalTime设置本地时间

/*****************************************************************
函数名:EnableSetTimePriviledge
功  能:开放设置时间权限
返回值:布尔类型,权限开放成功返回TRUE,否则返回FALSE
*****************************************************************/
BOOL EnableSetTimePriviledge()
{
    HANDLE           m_hToken;
    TOKEN_PRIVILEGES m_TokenPriv;
    BOOL             m_bTakenPriviledge;

    BOOL bOpenToken = OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | 
        TOKEN_QUERY, &m_hToken);

    m_bTakenPriviledge = FALSE;
    if (!bOpenToken) 
    {
        if (GetLastError() == ERROR_CALL_NOT_IMPLEMENTED) 
        {
            //Must be running on 95 or 98 not NT. In that case just ignore the error
            SetLastError(ERROR_SUCCESS);
            if(!m_hToken)
                CloseHandle(m_hToken);
            return TRUE;
        }
        TRACE(_T("Failed to get Adjust privilege token\n"));
        if(!m_hToken)
            CloseHandle(m_hToken);
        return FALSE;
    }
    ZeroMemory(&m_TokenPriv, sizeof(TOKEN_PRIVILEGES));
    if (!LookupPrivilegeValue(NULL, SE_SYSTEMTIME_NAME, &m_TokenPriv.Privileges[0].Luid))
    {
        TRACE(_T("Failed in callup to lookup privilege\n"));
        if(!m_hToken)
            CloseHandle(m_hToken);
        return FALSE;
    }
    m_TokenPriv.PrivilegeCount = 1;
    m_TokenPriv.Privileges[0].Attributes |= SE_PRIVILEGE_ENABLED;
    m_bTakenPriviledge = TRUE;

    BOOL bSuccess = AdjustTokenPrivileges(m_hToken, FALSE, &m_TokenPriv, 0, NULL, 0);
    if (!bSuccess)
        TRACE(_T("Failed to adjust SetTime privilege\n"));

    if(!m_hToken)
        CloseHandle(m_hToken);

    return bSuccess;
}

启用进程访问令牌权限,再进行设置。

SYSTEMTIME sysTime;
    GetLocalTime(&sysTime);
    if(SetLocalTime(&sysTime))
    {
        //设置成功
    }

转载于:https://www.cnblogs.com/wuyuan2011woaini/p/5340299.html

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值