C#利用win32 Api 修改本地系统时间、获取硬盘序列号
C#利用win32 Api 修改本地系统时间、获取硬盘序列号
发布时间:2016-12-28 来源:查字典编辑
摘要:C#利用win32Api修改本地系统时间、获取硬盘序列号,可以用于软件注册机制的编写!复制代码代码如下:usingSystem;usingS...

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#能有所帮助。

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新C#教程学习
热门C#教程学习
编程开发子分类