C# 修改系统时间

博主在开发物联网触摸屏程序时,需用win32的API函数实现修改系统时间功能,但运行代码总返回false。经研究发现,程序运行在win8系统上需要管理员权限,进行相应配置即可解决。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转自:https://blog.youkuaiyun.com/nihang1234/article/details/69945290

 

由于手头有一个物联网的触摸屏程序需要提供用户修改系统时间的功能。该功能需要win32的API函数提供支持。具体代码如下:

  internal class SystemTimeWin32
    {
        [DllImport("Kernel32.dll",CharSet = CharSet.Ansi)]
        public static extern bool SetSystemTime(ref Systemtime sysTime);
        [DllImport("Kernel32.dll")]
        public static extern bool SetLocalTime(ref Systemtime sysTime);
        [DllImport("Kernel32.dll")]
        public static extern void GetSystemTime(ref Systemtime sysTime);
        [DllImport("Kernel32.dll")]
        public static extern void GetLocalTime(ref Systemtime sysTime);

        /// <summary>
        /// 时间结构体
        /// </summary>
        [StructLayout(LayoutKind.Sequential)]
        public 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 wMiliseconds;
        }
    }

消费代码如下:

var localTime = new SystemTimeWin32.Systemtime(){
                wYear = 2015,
                wMonth = 12,
                wDay = 6,
                wHour = 10,
                wMinute = 23,
                wMiliseconds = 56

            };

            var result = SystemTimeWin32.SetSystemTime(ref localTime);
            MessageBox.Show(result.ToString());

运行中发现总是返回false。 
经过研究发现原来时我的程序运行在win8系统上需要管理员权限,然后程序作如下配置即可: 
这里写图片描述 
这里写图片描述 
这里写图片描述 
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值