![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как изменить системное время в WinNT-2000 ? [D5, Win2k]
Alku © (2002-05-22 11:17:00)Надо программно изменить системное время под NT. SetSystemTime не корректно работает. В описании сказано что надо чегото там еще разрешать. Обьясните как все это сделать?
ZZ (2002-05-22 16:38:00) [1]var
hToken: THandle;
tkp: TTokenPrivileges;
ReturnLength: Cardinal;
begin
if OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES orTOKEN_QUERY, hToken)
then begin
LookupPrivilegeValue(nil, SE_SYSTEMTIME_NAME ,tkp.Privileges[0].Luid); tkp.PrivilegeCount:=1; // one privelege to set tkp.Privileges[0].Attributes:=SE_PRIVILEGE_ENABLED;
if AdjustTokenPrivileges(hToken, False, tkp, 0, nil, ReturnLength)then
Код EAlexander
end;end.
EAlexander (2002-05-22 15:22:00) [2]ID - смещение согалсно часовым поясам :)
EAlexander (2002-05-22 15:18:00) [3]Это код у меня работает :)
procedure MyProc;
var
ST : SystemTime;
DT : TDateTime;
Year, Month, Day: Word;
Hour, Min, Sec, MSec: Word;
ID : Integer;
begin
DT := Now - 1;
DecodeDate(DT, Year, Month, Day);
ST.wYear := Year;
ST.wMonth := Month;
ST.wDay := Day;
ST.wHour := Hour + ID;
ST.wMinute := Min;
ST.wSecond := Sec;
ST.wMilliseconds := 0;
Win32Check(SetSystemTime(ST));
end;
Alku (2002-05-22 14:43:00) [4]А как конкретно?
EAlexander (2002-05-22 12:12:00) [5]1. у пользователя должны быть права на изменение времени
2. надо учитывать смещение по часовым поясам