首页 > 编程 > C# > 正文

c#修改本机时间,获取硬盘序列号

2023-05-18 12:33:14
字体:
来源:转载
供稿:网友

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
    }
}

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表