C#利用win32 Api 修改本地系统时间、获取硬盘序列号

2021-07-20 18:15

阅读:413


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;

}

///

/// 将本地时间与sqlserver服务器时间同步

///

/// 时间

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

);

///

/// 获取硬盘序列号

///

/// 硬盘盘符[c|d|e|….]

///

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

}

}


评论


亲,登录后才可以留言!