日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

使用C#实现网络时间同步功能

發布時間:2023/12/19 C# 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用C#实现网络时间同步功能 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在windows server系列的操作性中,存在一個同步時間的服務器,可惜很多服務器都禁用了這個功能。在日常自己的電腦上也會出現時間和標準時間不一致的問題。既然自己是學編程的,那么就自己動手豐衣足食吧。

下載是通過獲取網絡標準時間的源碼:

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; using System.Net; using System.Net.Sockets; using System.Text.RegularExpressions; using System.Runtime.InteropServices; using System.Runtime; /// <summary> /// 網絡時間 /// </summary> public class NetTime{/// <summary> /// 獲取標準北京時間,讀取http://www.beijing-time.org/time.asp /// </summary> /// <returns>返回網絡時間</returns> public DateTime GetBeijingTime(){DateTime dt;WebRequest wrt = null;WebResponse wrp = null;try{wrt = WebRequest.Create("http://www.beijing-time.org/time.asp");wrp = wrt.GetResponse();string html = string.Empty;using (Stream stream = wrp.GetResponseStream()){using (StreamReader sr = new StreamReader(stream, Encoding.UTF8)){html = sr.ReadToEnd();}}string[] tempArray = html.Split(';');for (int i = 0; i < tempArray.Length; i++){tempArray[i] = tempArray[i].Replace("\r\n", "");}string year = tempArray[1].Split('=')[1];string month = tempArray[2].Split('=')[1];string day = tempArray[3].Split('=')[1];string hour = tempArray[5].Split('=')[1];string minite = tempArray[6].Split('=')[1];string second = tempArray[7].Split('=')[1];dt = DateTime.Parse(year + "-" + month + "-" + day + " " + hour + ":" + minite + ":" + second);}catch (WebException){return DateTime.Parse("2011-1-1");}catch (Exception){return DateTime.Parse("2011-1-1");}finally{if (wrp != null)wrp.Close();if (wrt != null)wrt.Abort();}return dt;}}

獲取網絡時間,返回一個DateTime對象,然后傳給設置系統時間的方法,修改系統時間。下面是設置系統時間的代碼:

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; using System.Net; using System.Net.Sockets; using System.Text.RegularExpressions; using System.Runtime.InteropServices; using System.Runtime; /// <summary>/// 更新系統時間/// </summary>public class UpdateTime{//設置系統時間的API函數[DllImport("kernel32.dll")]private static extern bool SetLocalTime(ref SYSTEMTIME time);[StructLayout(LayoutKind.Sequential)]private struct SYSTEMTIME{public short year;public short month;public short dayOfWeek;public short day;public short hour;public short minute;public short second;public short milliseconds;}/// <summary>/// 設置系統時間/// </summary>/// <param name="dt">需要設置的時間</param>/// <returns>返回系統時間設置狀態,true為成功,false為失敗</returns>public static bool SetDate(DateTime dt){SYSTEMTIME st;st.year = (short)dt.Year;st.month = (short)dt.Month;st.dayOfWeek = (short)dt.DayOfWeek;st.day = (short)dt.Day;st.hour = (short)dt.Hour;st.minute = (short)dt.Minute;st.second = (short)dt.Second;st.milliseconds = (short)dt.Millisecond;bool rt = SetLocalTime(ref st);return rt;}}

需要注意的時,在win8系統上需要以管理員身份來運行程序,否則是無法設置系統時間的。下面這段代碼可以設置讓程序默認以管理員身份運行:

static void Main(string[] Args){/*** 當前用戶是管理員的時候,直接啟動應用程序* 如果不是管理員,則使用啟動對象啟動程序,以確保使用管理員身份運行*///獲得當前登錄的Windows用戶標示System.Security.Principal.WindowsIdentity identity = System.Security.Principal.WindowsIdentity.GetCurrent();//創建Windows用戶主題 Application.EnableVisualStyles();System.Security.Principal.WindowsPrincipal principal = new System.Security.Principal.WindowsPrincipal(identity);//判斷當前登錄用戶是否為管理員if (principal.IsInRole(System.Security.Principal.WindowsBuiltInRole.Administrator)){//如果是管理員,則直接運行 Application.EnableVisualStyles();Application.Run(new Form1());}else{//創建啟動對象System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();//設置運行文件startInfo.FileName = System.Windows.Forms.Application.ExecutablePath;//設置啟動參數startInfo.Arguments = String.Join(" ", Args);//設置啟動動作,確保以管理員身份運行startInfo.Verb = "runas";//如果不是管理員,則啟動UAC System.Diagnostics.Process.Start(startInfo);//退出 System.Windows.Forms.Application.Exit();}}

?

轉載于:https://www.cnblogs.com/lifeil/archive/2013/02/20/2917999.html

總結

以上是生活随笔為你收集整理的使用C#实现网络时间同步功能的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。