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#能有所帮助。
问题内容: 如何使用Java获取硬盘的序列号? 问题答案: 该序列号是由操作系统在格式化驱动器时创建的,而不是制造商的序列号。它是唯一的,因为它是根据当前时间信息动态创建的。AFAIK,没有返回制造商SN的API。充其量,可以读取高清固件的序列号,但这将涉及一些非常底层的API调用。请记住,即使您获得该编号,也无法保证该编号是唯一的,因为每个制造商都可以根据需要分配编号。
问题内容: 我怎样才能得到一个的使用驱动器上? 我想使用Python模块来执行此操作,而不是运行诸如的外部程序。也许使用模块? 问题答案: 如您所建议,fcntl是在Linux上执行此操作的方法。您要转换的C代码如下所示: 在Ubuntu 9.10上将其翻译成Python,它有点像这样: 抱歉,我将原始的C结构作为注释包含在内非常有用。另外,我对和模块都还很陌生,所以我可能正在做一些单调的事情。无
本文向大家介绍C#实现读取指定盘符硬盘序列号的方法,包括了C#实现读取指定盘符硬盘序列号的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#实现读取指定盘符硬盘序列号的方法。分享给大家供大家参考,具体如下: 更多关于C#相关内容感兴趣的读者可查看本站专题:《C#窗体操作技巧汇总》、《C#常见控件用法教程》、《WinForm控件用法总结》、《C#程序设计之线程使用技巧总结》、《C#操作
本文向大家介绍Linux 判断文件修改时间和系统时间差,包括了Linux 判断文件修改时间和系统时间差的使用技巧和注意事项,需要的朋友参考一下 Linux 判断文件修改时间和系统时间差 感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
本文向大家介绍python修改操作系统时间的方法,包括了python修改操作系统时间的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了python修改操作系统时间的方法。分享给大家供大家参考。具体实现方法如下: 希望本文所述对大家的Python程序设计有所帮助。
准备硬盘 Ceph 注重数据安全,就是说, Ceph 客户端收到数据已写入存储器的通知时,数据确实已写入硬盘。使用较老的内核(版本小于 2.6.33 )时,如果日志在原始硬盘上,就要禁用写缓存;较新的内核没问题。 用 hdparm 禁用硬盘的写缓冲功能。 sudo hdparm -W 0 /dev/hda 0 在生产环境,我们建议操作系统和 Ceph OSD 守护进程数据分别放到不同的硬盘。如果必