Einzelnen Beitrag anzeigen

Schorschi5566

Registriert seit: 6. Feb 2006
197 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#6

Re: SetSystemTime unter Windows VISTA?

  Alt 20. Jan 2010, 08:39
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
Uwe
  Mit Zitat antworten Zitat