当前位置:K88软件开发文章中心编程语言.NET.NET01 → 文章内容

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

减小字体 增大字体 作者:佚名  来源:翔宇亭IT乐园  发布时间:2018-12-31 11:50:48

:2010-01-28 07:31:00

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#修改本机时间,获取硬盘序列号