Windows-8 – HDD序列号在Windows XP,Vista和7中每2个字节翻转,
发布时间:2020-12-13 20:17:09 所属栏目:Windows 来源:网络整理
导读:我需要获得硬盘序列号才能使用它作为许可软件的关键. 我在这个url中使用了diskid32代码: http://www.winsim.com/diskid32/diskid32.html 它使用DeviceIoControl Win32 API与IOCTL_STORAGE_QUERY_PROPERTY的IO控制代码. 有效.但是,当我仔细检查打印在HDD本身
我需要获得硬盘序列号才能使用它作为许可软件的关键.
我在这个url中使用了diskid32代码: http://www.winsim.com/diskid32/diskid32.html 它使用DeviceIoControl Win32 API与IOCTL_STORAGE_QUERY_PROPERTY的IO控制代码. 有效.但是,当我仔细检查打印在HDD本身的实际序列号时,我发现每2个字节的数字被翻转. 一个简单的解决方案可能是简单地翻转字节.它在Windows XP,Vista和7中工作,但在Windows 8中不需要翻转! 我想知道在Windows XP,Vista和7中翻转字节的确切原因,为什么不在Windows 8中翻转.下一个Windows怎么样? 部分代码与轻微更改: int drive = 0; HANDLE hPhysicalDriveIOCTL = 0; char driveName [256]; sprintf (driveName,"\.PhysicalDrive%d",drive); // Windows NT,Windows 2000,Windows XP - admin rights not required hPhysicalDriveIOCTL = CreateFile (driveName,FILE_SHARE_READ | FILE_SHARE_WRITE,NULL,OPEN_EXISTING,NULL); if (hPhysicalDriveIOCTL != INVALID_HANDLE_VALUE) { _STORAGE_PROPERTY_QUERY query; DWORD cbBytesReturned = 0; char buffer [10000]; memset ((void *) & query,sizeof (query)); query.PropertyId = StorageDeviceProperty; query.QueryType = PropertyStandardQuery; memset (buffer,sizeof (buffer)); if ( DeviceIoControl (hPhysicalDriveIOCTL,IOCTL_STORAGE_QUERY_PROPERTY,& query,sizeof (query),& buffer,sizeof (buffer),& cbBytesReturned,NULL) ) { _STORAGE_DEVICE_DESCRIPTOR * descrip = (_STORAGE_DEVICE_DESCRIPTOR *) & buffer; char serialNumber [1000]; char modelNumber [1000]; char vendorId [1000]; char productRevision [1000]; flipAndCodeBytes (buffer,descrip -> SerialNumberOffset,1,serialNumber ); ... }
我在软件许可中使用相同的方法(和相同的代码).是的,Windows 8由于某些原因是为此方法返回翻转的值,我不能说为什么(所以我不能回答你的问题).
我的解决方案是您指出的解决方案:再次翻转值. 在我的情况下,它现在工作(我得到相同的值为Windows XP / Vista / 7和Windows 8). 祝你好运! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- windows-phone-7 – 市场应用程序图标用法
- Windows上的路由信息??是否有C/C++ API?
- windows-phone-7 – 如何将SqlCe数据库部署到用于Windows P
- 如何关闭Windows Azure的“此Windows副本不是正版”消息?
- 想说再见不容易,win7最新市占率依然超36%
- .net – 如何在Windows Azure存储上查询Cloud Blob
- .net – 缺少调试|项目的任何CPU构建配置,并在Windows x64上
- windows-services – MsDeploy runCommand所需的提升权限?
- 小程序 – 在Windows-chrome中,奇数个非英语字符被破坏
- win2003系统同步Linux ntp server批处理
推荐文章
站长推荐
- Windows Touch Input WM GESTURE WM TOUCH
- 我如何诊断“Microsoft .NET ClickOnce启动实用程
- Windows系统调用中API的3环部分(依据分析重写Rea
- win10系统更新后跳板机无法使用
- Windows Azure是否为虚拟机提供静态IP?
- windows-server-2008 – 如何在两台Windows 2008
- 将Windows Azure Web角色升级到Server 2008 R2以
- 更改Windows密码策略
- Windows服务在从3.5迁移的Windows Server 2008,x
- 单元测试 – Windows Phone开发和单元测试
热点阅读