16,472
社区成员
发帖
与我相关
我的任务
分享
CString year, mouth, day, hour, m, s;
GetDlgItemText(IDC_EDT_YEAR, year);
GetDlgItemText(IDC_EDT_MOUTH, mouth);
GetDlgItemText(IDC_EDT_DAY, day);
GetDlgItemText(IDC_EDT_HOUR, hour);
GetDlgItemText(IDC_EDT_M, m);
GetDlgItemText(IDC_EDT_S, s);
SYSTEMTIME curtime;//声明结构体
curtime.wYear = _ttoi(year);
curtime.wMonth = _ttoi(mouth);
curtime.wDay= _ttoi(day);
curtime.wHour= _ttoi(hour);
curtime.wMinute = _ttoi(m);
curtime.wSecond = _ttoi(s);
curtime.wDayOfWeek = 1;
int res = SetLocalTime(&curtime);
if (res)
{
AfxMessageBox(_T("设置时间成功"));
}
else
{
AfxMessageBox(_T("失败"));
}
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;
The SetLocalTime function enables the SE_SYSTEMTIME_NAME privilege before changing the local time. This privilege is disabled by default.
提升权限