C#调用Kernel32.dll下SetLocaleInfo接口,修改操作系统中的时间的问题

自己试用locale_sshortdate修改成功了日期格式,时间格式却修改不了,实用的是locale_STIME和LOCALE_ITIME,,LOCALE_STIMEFORMAT,不知道是定义的值不对还是格式不对就是修改不了,希望大牛们帮下忙,

DllImport("kernel32.dll", EntryPoint = "GetSystemDefaultLCID")]

public static extern int GetSystemDefaultLCID();

[DllImport("kernel32.dll", EntryPoint = "SetLocaleInfoA")]

public static extern int SetLocaleInfo(int Locale, int LCType, string lpLCData);

public const int LOCALE_SLONGDATE = 0x20;

public const int LOCALE_SSHORTDATE = 0x1F;

public const int LOCALE_STIME = 0x1003;

    public void SetDateTimeFormat()  
    {  
        try  
        {  
            int x = GetSystemDefaultLCID();  
            SetLocaleInfo(x, LOCALE_STIME, "HH:mm:ss");        //时间格式  
            SetLocaleInfo(x, LOCALE_SSHORTDATE, "yyyy-MM-dd");   //短日期格式    
            SetLocaleInfo(x, LOCALE_SLONGDATE, "yyyy-MM-dd");   //长日期格式   
        }  
        catch (Exception ex)  
        {  
            Console.WriteLine(ex);  
        }  
    }  

SetLocaleInfo(x, LOCALE_STIME, "HH:mm:ss"); //时间格式

关键就是修改时间格式怎么做?
还有一个问题,在修改系统日期格式的时候,在windows自己的日期设置中已经修改成功了,但是托盘对应的时间格式还是不修改,这是怎么回事?

注意要有足够的权限

http://blog.csdn.net/jzz870519/article/details/5803624

修改时间格式等,需要有Administrator权限,然后就是你的格式是否正确