码迷,mamicode.com
首页 > Windows程序 > 详细

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

时间:2017-12-14 04:24:19      阅读:173      评论:0      收藏:0      [点我收藏+]

标签:代码分析   inter   param   硬盘   filename   代码   round   实用   区别   

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#利用win32 Api 修改本地系统时间、获取硬盘序列号

本文地址:  http://www.paobuke.com/develop/c-develop/pbk23115.html






相关内容

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

标签:代码分析   inter   param   硬盘   filename   代码   round   实用   区别   

原文地址:http://www.cnblogs.com/paobuke/p/8035593.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!