C#利用win32 Api 修改本地系统时间、获取硬盘序列号
发布时间:2020-12-15 05:54:59 所属栏目:百科 来源:网络整理
导读:C#利用win32 Api 修改本地系统时间、获取硬盘序列号,可以用于软件注册机制的编写! 复制代码 代码如下: using System; using System.Collections.Generic; using System.Text; using System.Runtime.InteropServices; namespace Fengyun { public class Win
C#利用win32 Api 修改本地系统时间、获取硬盘序列号,可以用于软件注册机制的编写! 复制代码 代码如下: using System; using System.Collections.Generic; using System.Text; using System.Runtime.InteropServices; namespace Fengyun { public class Win32 { #region 修改本地系统时间 [DllImport("Kernel32.dll")] private extern static void GetSystemTime(ref SYSTEMTIME lpSystemTime); [DllImport("Kernel32.dll")] private extern static uint SetLocalTime(ref SYSTEMTIME lpSystemTime); [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; } /// <summary> /// 将本地时间与sqlserver服务器时间同步 /// </summary> /// <param name="SqlServerTime">时间</param> public static void SetTime(DateTime SqlServerTime) { SYSTEMTIME st = new SYSTEMTIME(); st.wYear = Convert.ToUInt16(SqlServerTime.Year); st.wMonth = Convert.ToUInt16(SqlServerTime.Month); st.wDay = Convert.ToUInt16(SqlServerTime.Day); st.wHour = Convert.ToUInt16(SqlServerTime.Hour); st.wMilliseconds = Convert.ToUInt16(SqlServerTime.Millisecond); st.wMinute = Convert.ToUInt16(SqlServerTime.Minute); st.wSecond = Convert.ToUInt16(SqlServerTime.Second); SetLocalTime(ref st); } #endregion #region 获取硬盘序列号 [DllImport("kernel32.dll")] private static extern int GetVolumeInformation( string lpRootPathName, string lpVolumeNameBuffer, int nVolumeNameSize, ref int lpVolumeSerialNumber, int lpMaximumComponentLength, int lpFileSystemFlags, string lpFileSystemNameBuffer, int nFileSystemNameSize ); /// <summary> /// 获取硬盘序列号 /// </summary> /// <param name="drvID">硬盘盘符[c|d|e|....]</param> /// <returns></returns> public static string GetDiskVolume(string drvID) { const int MAX_FILENAME_LEN = 256; int retVal = 0; int lpMaximumComponentLength = 0; int lpFileSystemFlags = 0; string lpVolumeNameBuffer = null; string lpFileSystemNameBuffer = null; int i = GetVolumeInformation( drvID + @":", lpVolumeNameBuffer, MAX_FILENAME_LEN, ref retVal, lpMaximumComponentLength, lpFileSystemFlags, lpFileSystemNameBuffer, MAX_FILENAME_LEN ); return retVal.ToString("x"); } #endregion } } 以上就是本文所分享的代码的全部内容了,希望对大家学习C#能有所帮助。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |