Hallo
DP-Gemeinde,
ich habe das gleiche Problem und bei mir funktioniert die Lösung leider nicht unter Vista.
Folgenden Code habe ich hier gesucht (
) und gefunden:
Delphi-Quellcode:
// Special-Privilege für Setzen der Systemzeit holen...
if Win32Platform = VER_PLATFORM_WIN32_NT then
begin
tpResult := OpenProcessToken(GetCurrentProcess(),
TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY,
TTokenHd);
if tpResult then
begin
tpResult := LookupPrivilegeValue(nil,
'SeSystemtimePrivilege',
TTokenPvg.Privileges[0].Luid);
TTokenPvg.PrivilegeCount := 1;
TTokenPvg.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
cbtpPrevious := SizeOf(rTTokenPvg);
pcbtpPreviousRequired := 0;
if tpResult then
begin
tpResult := Windows.AdjustTokenPrivileges(TTokenHd, False, TTokenPvg,cbtpPrevious,
rTTokenPvg, pcbtpPreviousRequired);
CloseHandle(TTokenHd);
showmessage('Priv geändert: ' + BoolToStr(tpResult));
end;
end;
Danach ändere ich mit SetSystemTime die Zeit. Das Ganze funktioniert auf Win2k und XP ohne Probleme (klar, da braucht man das entsprechende Privileg ja nicht extra zu setzen).
showmessage('Priv geändert: ' + BoolToStr(tpResult)); wird bei allen Betriebssystemen erreicht. Trotzdem keine Änderung der Systemzeit bei Vista.
Hat jemand einen Tipp, was ich falsch mache?
Viele Grüße,
Uwe