Thanks to you all. I figured out the problem with your help. All the parameters of the SYSTEMTIME struct needed be filled with the dllstructsetdata before anything happened. The final script required admin to run. The finished code is so.
#RequireAdmin
#include <WinAPI.au3>
#include <WinAPIDiag.au3>
Local $setTime = DllStructCreate("WORD wYear; WORD wMonth; WORD wDayOfWeek; WORD wDay; WORD wHour; WORD wMinute; WORD wSecond; WORD wMilliseconds")
DllStructSetData($setTime, 1, 2012)
DllStructSetData($setTime, 2, 6)
DllStructSetData($setTime, 4, 2)
DllStructSetData($setTime, 5, 11)
DllStructSetData($setTime, 6, 54)
DllStructSetData($setTime, 7, 32)
DllStructSetData($setTime, 8, 254)
Local $aRet=DllCall("Kernel32.dll", "bool", "SetLocalTime", "ptr", DllStructGetPtr($setTime))
if @error Then
MsgBox(16,"Error","Error DllCall")
Exit
EndIf
If $aRet[0]=0 Then
Local $iError=_WinAPI_GetLastError()
MsgBox(16,"Error SetLocalTime",_WinAPI_GetErrorMessage($iError))
Else
MsgBox(64,"Info","Everything should be OK")
EndIf