updating system's time using .Net

Posted by user62958 on Stack Overflow See other posts from Stack Overflow or by user62958
Published on 2009-02-06T19:43:14Z Indexed on 2010/04/07 7:23 UTC
Read the original article Hit count: 317

Filed under:
|

I am trying to update my system time using the following:

        [StructLayout(LayoutKind.Sequential)] 
        private struct SYSTEMTIME
        {
            public ushort wYear;
            public ushort wMonth;
            public ushort wDayOfWeek;
            public ushort wDay;
            public ushort wHour;
            public ushort wMinute;
            public ushort wSecond;
            public ushort wMilliseconds;
        }

   [DllImport("kernel32.dll", EntryPoint = "GetSystemTime", SetLastError = true)]
    private extern static void Win32GetSystemTime(ref SYSTEMTIME lpSystemTime);

    [DllImport("kernel32.dll", EntryPoint = "SetSystemTime", SetLastError = true)]
    private extern static bool Win32SetSystemTime(ref SYSTEMTIME lpSystemTime);

     public void SetTime()
    {
        TimeSystem correctTime = new TimeSystem();
        DateTime sysTime = correctTime.GetSystemTime();
        // Call the native GetSystemTime method
        // with the defined structure.
        SYSTEMTIME systime = new SYSTEMTIME();
        Win32GetSystemTime(ref systime);

        // Set the system clock ahead one hour. 
        systime.wYear = (ushort)sysTime.Year;
        systime.wMonth = (ushort)sysTime.Month;
        systime.wDayOfWeek = (ushort)sysTime.DayOfWeek;
        systime.wDay = (ushort)sysTime.Day;
        systime.wHour = (ushort)sysTime.Hour;
        systime.wMinute = (ushort)sysTime.Minute;
        systime.wSecond = (ushort)sysTime.Second;
        systime.wMilliseconds = (ushort)sysTime.Millisecond;

        Win32SetSystemTime(ref systime);
    }

When I debug everything looks good and all the values are correct but when it calles the Win32SetSystemTime(ref systime) th actual time of system(display time) doesn't change and stays the same. The strange part is that when I call the Win32GetSystemTime(ref systime) it gives me the new updated time. Can someone give me some help on this?

© Stack Overflow or respective owner

Related posts about c#

Related posts about .NET