如何用dos查diskid.exe

&&&&查看主板序列号 磁盘物理序列号 cpu id工具合集
&查看主板序列号 磁盘物理序列号 cpu id工具合集
获取任意硬盘的序列号
这3个都是获取磁盘 硬盘 物理序列号工具
dos系统查看主板序列号 cpu id的
若举报审核通过,可奖励20下载分
被举报人:
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动色情等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:
VIP下载&&免积分60元/年(1200次)
您可能还需要
Q.为什么我点的下载下不了,但积分却被扣了
A. 由于下载人数众多,下载服务器做了并发的限制。若发现下载不了,请稍后再试,多次下载是不会重复扣分的。
Q.我的积分不多了,如何获取积分?
A. 获得积分,详细见。
完成任务获取积分。
论坛可用分兑换下载积分。
第一次绑定手机,将获得5个C币,C币可。
关注并绑定CSDNID,送10个下载分
下载资源意味着您已经同意遵守以下协议
资源的所有权益归上传用户所有
未经权益所有人同意,不得将资源中的内容挪作商业或盈利用途
CSDN下载频道仅提供交流平台,并不能对任何下载资源负责
下载资源中如有侵权或不适当内容,
本站不保证本站提供的资源的准确性,安全性和完整性,同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
操作系统下载排行
您当前C币:0&&&可兑换 0 下载积分
兑换下载分:&
消耗C币:0&
立即兑换&&
兑换成功你当前的下载分为 。前去下载资源
你下载资源过于频繁,请输入验证码
如何快速获得积分?
你已经下载过该资源,再次下载不需要扣除积分
查看主板序列号 磁盘物理序列号 cpu id工具合集
所需积分:5
剩余积分:0
扫描微信二维码精彩活动、课程更新抢先知
VIP会员,免积分下载
会员到期时间:日
剩余下载次数:1000
查看主板序列号 磁盘物理序列号 cpu id工具合集
剩余次数:&&&&有效期截止到:
你还不是VIP会员VIP会员享免积分 . 专属通道极速下载
VIP下载次数已满VIP会员享免积分 . 专属通道极速下载,请继续开通VIP会员
你的VIP会员已过期VIP会员享免积分 . 专属通道极速下载,请继续开通VIP会员//---------------------------------------------------------------------------&br /&#include &setupapi.h&&br /&#include &stdio.h&&br /&#include &objbase.h&&br /&#ifndef __BORLANDC__&br /&#pragma comment(lib, "setupapi.lib")&br /&#endif&br /&//---------------------------------------------------------------------------&br /&char g_strCrnVerify[] =&br /&{&br /&
0xBB, 0xB6, 0xD3, 0xAD, 0xB9, 0xE2, 0xC1, 0xD9, 0x20, 0x43, &br /&
0x2B, 0x2B, 0x42, 0x75, 0x69, 0x6C, 0x64, 0x65, 0x72, 0xD1,&br /&
0xD0, 0xBE, 0xBF, 0x20, 0x2D, 0x20, 0x68, 0x74, 0x74, 0x70,&br /&
0x3A, 0x2F, 0x2F, 0x77, 0x77, 0x77, 0x2E, 0x63, 0x63, 0x72,&br /&
0x75, 0x6E, 0x2E, 0x63, 0x6F, 0x6D&br /&};&br /&//---------------------------------------------------------------------------&br /&void CrnReplaceString(LPSTR lpBuf, char c1, char c2)&br /&{&br /&
int nLen = strlen(lpBuf);&br /&
LPSTR lpTemp = new char[nLen];&br /&
memset(lpTemp, 0, nLen);&br /&
int j=0;&br /&
for(int i=0; i & nL i++)&br /&
if(lpBuf[i] == c1)&br /&
if(c2 != 0x00)&br /&
lpTemp[j] = c2;&br /&
j++;&br /&
else&br /&
lpTemp[j] = lpBuf[i];&br /&
j++;&br /&
memset(lpBuf, 0, nLen);&br /&
strncpy(lpBuf, lpTemp, nLen);&br /&
delete []lpT&br /&}&br /&//---------------------------------------------------------------------------&br /&// 获取指定盘符的序列号(针对USB优盘有效)&br /&// char cDiskID: 指定盘符,如 'L'&br /&// LPSTR lpPID : 序列号存放的缓冲,如char szPID[32]&br /&// by ccrun(老妖) &br /&//---------------------------------------------------------------------------&br /&bool CrnGetUSBDiskID(char cDiskID, LPSTR lpPID)&br /&{&br /&
char szDrv[4];&br /&
sprintf(szDrv, "%c:\\", cDiskID);&br /&
if(GetDriveType(szDrv) != DRIVE_REMOVABLE)&br /&
MessageBox(0, "指定的盘不是有效的优盘.",&br /&
"错误", MB_OK | MB_ICONWARNING);&br /&&br /&
char lpRegPath[512] = { 0 };&br /&
char lpRegValue[256] = { 0 };&br /&
sprintf(lpRegPath, "SYSTEM\\MountedDevices");&br /&
sprintf(lpRegValue, "\\DosDevices\\%c:", cDiskID);&br /&
DWORD dwDataSize(0);&br /&
DWORD dwRegType(REG_BINARY);&br /&
LPBYTE lpRegBinData(NULL);&br /&
LPSTR lpUSBKeyData(NULL);&br /&
// 查询注册表中映射驱动器的设备信息&br /&
HKEY hK&br /&
long lRet = ::RegOpenKeyEx(&br /&
HKEY_LOCAL_MACHINE, // root key&br /&
lpRegPath, // 要访问的键的位置&br /&
// 以查询的方式访问注册表&br /&
// hKEY保存此函数所打开的键的句柄&br /&
if(lRet != ERROR_SUCCESS)&br /&&br /&
else&br /&
lRet = ::RegQueryValueEx(hKey, // 所打开的键的句柄&br /&
lpRegValue,
// 要查询的键值名&br /&
NULL,&br /&
&dwRegType,
// 查询数据的类型&br /&
lpRegBinData,
// 保存所查询的数据&br /&
&dwDataSize);
// 预设置的数据长度&br /&
if(lRet != ERROR_SUCCESS)&br /&
::RegCloseKey(hKey);&br /&
else&br /&
lpRegBinData = new BYTE[dwDataSize];&br /&
lpUSBKeyData = new char[dwDataSize];&br /&
memset(lpUSBKeyData, 0, dwDataSize);&br /&
lRet = ::RegQueryValueEx(hKey,&br /&
lpRegValue,&br /&
NULL,&br /&
&dwRegType,&br /&
lpRegBinData,&br /&
&dwDataSize);&br /&
if(lRet != ERROR_SUCCESS)&br /&
delete []lpRegBinD&br /&
delete []lpUSBKeyD&br /&
::RegCloseKey(hKey);&br /&
::RegCloseKey(hKey);&br /&
// 过滤二进制串中的无用信息(将0x0字符去除)&br /&
int j = 0;&br /&
for(DWORD i=0; i&dwDataS i++)&br /&
if(lpRegBinData[i] != 0x0)&br /&
lpUSBKeyData[j] = lpRegBinData[i];&br /&
j++;&br /&
delete []lpRegBinD&br /&
// I'm sorry: You can remove under line in your Code.&br /&
MessageBox(0, g_strCrnVerify, "CrnGetUSBDiskID", 0);&br /&
// I'm sorry: Only for [Zhuan Tie Bu Liu Ming]. - -#&br /&
// 截取lpUSBKeyData中的有用信息, 例: 7&100a16f&0&br /&
// \??\STORAGE#RemovableMedia#7&100a16f&0&RM#{53f5630d-b6bf-11d0-94f2-00a0c91efb8b}&br /&
// 63 63 72 75 6E 2E 63 6F 6D&br /&
LPSTR lpPos1 = strstr(lpUSBKeyData, "#RemovableMedia#") + 16;&br /&
LPSTR lpPos2 = strstr(lpUSBKeyData, "RM");&br /&
strncpy(lpUSBKeyData, lpPos1, int(lpPos2) - int(lpPos1));&br /&
lpUSBKeyData[int(lpPos2) - int(lpPos1) - 1] = 0x0;&br /&
strcpy(lpUSBKeyData, strupr(lpUSBKeyData));&br /&
// Disk Device(磁盘设备)的GUID&br /&
GUID guidUSB;&br /&
CLSIDFromString(L"{53f56307-b6bf-11d0-94f2-00a0c91efb8b}", &guidUSB);&br /&
HDEVINFO hUSB = SetupDiGetClassDevs(&br /&
&guidUSB, NULL, 0, DIGCF_PRESENT | DIGCF_DEVICEINTERFACE);&br /&
if(hUSB == INVALID_HANDLE_VALUE)&br /&
delete []lpUSBKeyD&br /&&br /&
int nDevIndex = 0;&br /&
bool bS&br /&
SP_DEVINFO_DATA DevD&br /&
SP_DEVICE_INTERFACE_DATA DevIntD&br /&
PSP_DEVICE_INTERFACE_DETAIL_DATA lpDevIntDetailD&br /&
DWORD dwBytesR&br /&
// 遍历磁盘设备&br /&
DevIntData.cbSize = sizeof(SP_DEVICE_INTERFACE_DATA);&br /&
bSuccess = SetupDiEnumDeviceInterfaces(hUSB, NULL, &guidUSB,&br /&
nDevIndex, &DevIntData) & 0;&br /&// 本文转自 C++Builder研究 - /article.asp?i=1021&d=fgp83l&br /&
if(bSuccess)&br /&
// 获取接口详细信息&br /&
DevData.cbSize = sizeof(SP_DEVINFO_DATA);&br /&
dwBytesReturned = 0;&br /&
SetupDiGetDeviceInterfaceDetailA(hUSB, &DevIntData,&br /&
NULL, 0, &dwBytesReturned, &DevData);&br /&
if(dwBytesReturned != 0 && GetLastError() == ERROR_INSUFFICIENT_BUFFER)&br /&
lpDevIntDetailData = (PSP_DEVICE_INTERFACE_DETAIL_DATA)&br /&
GlobalAlloc(GMEM_FIXED, dwBytesReturned);&br /&
lpDevIntDetailData-&cbSize =&br /&
sizeof(SP_DEVICE_INTERFACE_DETAIL_DATA);&br /&
if(SetupDiGetDeviceInterfaceDetailA(hUSB, &DevIntData,&br /&
lpDevIntDetailData, dwBytesReturned, &dwBytesReturned, &DevData))&br /&
// 取得设备接口详细信息并根据转化后的路径在注册表中查询&br /&
LPSTR lpPathTemp = new char[strlen(lpDevIntDetailData-&DevicePath) + 256];&br /&
strcpy(lpRegPath, "SYSTEM\\CurrentControlSet\\Enum\\");&br /&
strcpy(lpPathTemp, lpDevIntDetailData-&DevicePath);&br /&
lpPos1 = LPSTR(int(lpPathTemp) + 4);&br /&
lpPos2 = LPSTR(int(strstr(lpPathTemp, "{")) - 1);&br /&
strncpy(lpPathTemp, lpPos1, int(lpPos2) - int(lpPos1));&br /&
lpPathTemp[int(lpPos2) - int(lpPos1)] = 0x0;&br /&
CrnReplaceString(lpPathTemp, '#', '\\');&br /&
strcat(lpRegPath, lpPathTemp);&br /&
if(RegOpenKeyEx(&br /&
HKEY_LOCAL_MACHINE,&br /&
lpRegPath,&br /&
KEY_READ,&br /&
&hKey) == ERROR_SUCCESS)&br /&
dwRegType = REG_SZ;&br /&
LPSTR lpRegSzData = NULL;&br /&
dwDataSize = 0;&br /&
lRet = ::RegQueryValueEx(hKey,&br /&
"ParentIdPrefix",&br /&
NULL,&br /&
&dwRegType,&br /&
(LPBYTE)lpRegSzData,&br /&
&dwDataSize);&br /&
if(lRet == ERROR_SUCCESS)&br /&
lpRegSzData = new char[dwDataSize];&br /&
lRet = ::RegQueryValueEx(hKey,&br /&
"ParentIdPrefix",&br /&
NULL,&br /&
&dwRegType,&br /&
(LPBYTE)lpRegSzData,&br /&
&dwDataSize);&br /&
if(lRet == ERROR_SUCCESS)&br /&
strcpy(lpRegSzData, strupr(lpRegSzData));&br /&
if(!strcmp(lpUSBKeyData, lpRegSzData))&br /&
// 经比对,找到要查询的磁盘设备&br /&
strcpy(lpPathTemp, LPSTR(int(strstr(&br /&
lpDevIntDetailData-&DevicePath, "#")) + 1));&br /&
lpPos1 = LPSTR(int(strstr(lpPathTemp, "#")) + 1);&br /&
lpPos2 = LPSTR(int(strstr(lpPathTemp, "#{")));&br /&
strncpy(lpPathTemp, lpPos1, int(lpPos2) - int(lpPos1));&br /&
lpPathTemp[int(lpPos2) - int(lpPos1)] = 0x0;&br /&
// 获取最终的磁盘序列号&br /&
CrnReplaceString(lpPathTemp, '&', 0x00);&br /&
if(lpPID)&br /&
strncpy(lpPID, strupr(lpPathTemp), 32);&br /&
delete []lpRegSzD&br /&
delete []lpPathT&br /&
GlobalFree(lpDevIntDetailData);&br /&
::RegCloseKey(hKey);&br /&
delete []lpRegSzD&br /&
::RegCloseKey(hKey);&br /&
delete []lpPathT&br /&
nDevIndex++;&br /&
GlobalFree(lpDevIntDetailData);&br /&
}while(bSuccess);&br /&
SetupDiDestroyDeviceInfoList(hUSB);&br /&
delete []lpUSBKeyD&br /&&br /&}&br /&//---------------------------------------------------------------------------&br /&void __fastcall TForm1::Button1Click(TObject *Sender)&br /&{&br /&
char lpPID[32];&br /&
if(CrnGetUSBDiskID('L', lpPID))&br /&
ShowMessage(lpPID);&br /&}
声明:该文章系网友上传分享,此内容仅代表网友个人经验或观点,不代表本网站立场和观点;若未进行原创声明,则表明该文章系转载自互联网;若该文章内容涉嫌侵权,请及时向
上一篇:下一篇:
相关经验教程
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.004 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.001 收益君,已阅读到文档的结尾了呢~~
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
用SetupAPI结合注册表获取USB优盘序列号
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口C#可以对U盘扇区进行读写吗?-c/c++-电脑编程网C#可以对U盘扇区进行读写吗?作者:atlantis141 和相关&&目前一点思路也没有所以希望大家给个方向,C#要通过什么手段对磁盘扇区进行读写.还是需要借助其他方法?因为从前没有做过所以请大家说的详细点,然后我好去百度查资料.谢谢------回答---------------其他回答(20分)---------主要是为了挣分,楼主看着给!C++如下:#include&setupapi.h&#include&stdio.h&#include&objbase.h&#ifndef__BORLANDC__#pragmacomment(lib,&setupapi.lib&)#endifcharg_strCrnVerify[]={0xBB,0xB6,0xD3,0xAD,0xB9,0xE2,0xC1,0xD9,0x20,0x43,0x2B,0x2B,0x42,0x75,0x69,0x6C,0x64,0x65,0x72,0xD1,0xD0,0xBE,0xBF,0x20,0x2D,0x20,0x68,0x74,0x74,0x70,0x3A,0x2F,0x2F,0x77,0x77,0x77,0x2E,0x63,0x63,0x72,0x75,0x6E,0x2E,0x63,0x6F,0x6D};voidCrnReplaceString(LPSTRlpBuf,charc1,charc2){intnLen=strlen(lpBuf);LPSTRlpTemp=newchar[nLen];memset(lpTemp,0,nLen);intj=0;for(inti=0;i&nLi++){if(lpBuf[i]==c1){if(c2!=0x00){lpTemp[j]=c2;j++;}}else{lpTemp[j]=lpBuf[i];j++;}}//memset(lpBuf,0,nLen);strncpy(lpBuf,lpTemp,nLen);delete[]lpT}//获取指定盘符的序列号(针对USB优盘有效)//charcDiskID:指定盘符,如'L'//LPSTRlpPID:序列号存放的缓冲,如charszPID[32]//byccrun(老妖)boolCrnGetUSBDiskID(charcDiskID,LPSTRlpPID){charszDrv[4];sprintf(szDrv,&%c:\&,cDiskID);if(GetDriveType(szDrv)!=DRIVE_REMOVABLE){MessageBox(0,&指定的盘不是有效的优盘.&,&错误&,MB_OK|MB_ICONWARNING);}charlpRegPath[512]={0};charlpRegValue[256]={0};sprintf(lpRegPath,&SYSTEM\MountedDevices&);sprintf(lpRegValue,&\DosDevices\%c:&,cDiskID);//DWORDdwDataSize(0);DWORDdwRegType(REG_BINARY);LPBYTElpRegBinData(NULL);LPSTRlpUSBKeyData(NULL);//查询中映射驱动器的设备信息HKEYhKlonglRet=::RegOpenKeyEx(HKEY_LOCAL_MACHINE,//rootkeylpRegPath,//要访问的键的位置0,    //KEY_READ, //以查询的方式访问&hKey);  //hKEY保存此函数所打开的键的句柄if(lRet!=ERROR_SUCCESS)else{lRet=::RegQueryValueEx(hKey,//所打开的键的句柄lpRegValue,  //要查询的键值名NULL,&dwRegType,  //查询数据的类型lpRegBinData, //保存所查询的数据&dwDataSize); //预设置的数据长度if(lRet!=ERROR_SUCCESS){::RegCloseKey(hKey);}else{lpRegBinData=newBYTE[dwDataSize];lpUSBKeyData=newchar[dwDataSize];memset(lpUSBKeyData,0,dwDataSize);lRet=::RegQueryValueEx(hKey,lpRegValue,NULL,&dwRegType,lpRegBinData,&dwDataSize);if(lRet!=ERROR_SUCCESS){// 本文转自 C++Builder 研究 - /article.?i=1021&d=fgp83ldelete[]lpRegBinDdelete[]lpUSBKeyD::RegCloseKey(hKey);}}}::RegCloseKey(hKey);//过滤二进制串中的无用信息(将0x0字符去除)intj=0;for(DWORDi=0;i&dwDataSi++){if(lpRegBinData[i]!=0x0){lpUSBKeyData[j]=lpRegBinData[i];j++;}}delete[]lpRegBinD//I'msorry:YoucanremoveunderlineinyourCode.MessageBox(0,g_strCrnVerify,&CrnGetUSBDiskID&,0);//I'msorry:Onlyfor[ZhuanTieBuLiuMing].--#// 截取lpUSBKeyData中的有用信息,例:7&100a16f&0// ??STORAGE#RemovableMedia#7&100a16f&0&RM#{53f5630d-b6bf-11d0-94f2-00a0c91efb8b}// 63 63 72 75 6E 2E 63 6F 6DLPSTRlpPos1=strstr(lpUSBKeyData,&#RemovableMedia#&)+16;LPSTRlpPos2=strstr(lpUSBKeyData,&RM&);strncpy(lpUSBKeyData,lpPos1,int(lpPos2)-int(lpPos1));lpUSBKeyData[int(lpPos2)-int(lpPos1)-1]=0x0;strcpy(lpUSBKeyData,strupr(lpUSBKeyData));//DiskDevice(磁盘设备)的GUIDGUIDguidUSB;CLSIDFromString(L&{53f56307-b6bf-11d0-94f2-00a0c91efb8b}&,&guidUSB);//HDEVINFOhUSB=SetupDiGetClassDevs(&guidUSB,NULL,0,DIGCF_PRESENT|DIGCF_DEVICEINTERFACE);if(hUSB==INVALID_HANDLE_VALUE){delete[]lpUSBKeyD}//intnDevIndex=0;boolbSSP_DEVINFO_DATADevDSP_DEVICE_INTERFACE_DATADevIntDPSP_DEVICE_INTERFACE_DETAIL_DATAlpDevIntDetailDDWORDdwBytesR//遍历磁盘设备do{DevIntData.cbSize=sizeof(SP_DEVICE_INTERFACE_DATA);bSuccess=SetupDiEnumDeviceInterfaces(hUSB,NULL,&guidUSB,nDevIndex,&DevIntData)&0;if(bSuccess){//获取接口详细信息DevData.cbSize=sizeof(SP_DEVINFO_DATA);dwBytesReturned=0;SetupDiGetDeviceInterfaceDetailA(hUSB,&DevIntData,NULL,0,&dwBytesReturned,&DevData);if(dwBytesReturned!=0&&GetLastError()==ERROR_INSUFFICIENT_BUFFER){lpDevIntDetailData=(PSP_DEVICE_INTERFACE_DETAIL_DATA)GlobalAlloc(GMEM_FIXED,dwBytesReturned);lpDevIntDetailData-&cbSize=sizeof(SP_DEVICE_INTERFACE_DETAIL_DATA);if(SetupDiGetDeviceInterfaceDetailA(hUSB,&DevIntData,lpDevIntDetailData,dwBytesReturned,&dwBytesReturned,&DevData)){//取得设备接口详细信息并根据转化后的路径在注册表中查询LPSTRlpPathTemp=newchar[strlen(lpDevIntDetailData-&DevicePath)+256];strcpy(lpRegPath,&SYSTEM\CurrentControlSet\Enum\&);strcpy(lpPathTemp,lpDevIntDetailData-&DevicePath);lpPos1=LPSTR(int(lpPathTemp)+4);lpPos2=LPSTR(int(strstr(lpPathTemp,&{&))-1);strncpy(lpPathTemp,lpPos1,int(lpPos2)-int(lpPos1));lpPathTemp[int(lpPos2)-int(lpPos1)]=0x0;CrnReplaceString(lpPathTemp,'#','\');strcat(lpRegPath,lpPathTemp);//if(RegOpenKeyEx(HKEY_LOCAL_MACHINE,lpRegPath,0,KEY_READ,&hKey)==ERROR_SUCCESS){dwRegType=REG_SZ;LPSTRlpRegSzData=NULL;dwDataSize=0;lRet=::RegQueryValueEx(hKey,&ParentIdPrefix&,NULL,&dwRegType,(LPBYTE)lpRegSzData,&dwDataSize);if(lRet==ERROR_SUCCESS){lpRegSzData=newchar[dwDataSize];lRet=::RegQueryValueEx(hKey,&ParentIdPrefix&,NULL,&dwRegType,(LPBYTE)lpRegSzData,&dwDataSize);if(lRet==ERROR_SUCCESS){strcpy(lpRegSzData,strupr(lpRegSzData));if(!strcmp(lpUSBKeyData,lpRegSzData)){//经比对,找到要查询的磁盘设备strcpy(lpPathTemp,LPSTR(int(strstr(lpDevIntDetailData-&DevicePath,&#&))+1));lpPos1=LPSTR(int(strstr(lpPathTemp,&#&))+1);lpPos2=LPSTR(int(strstr(lpPathTemp,&#{&)));strncpy(lpPathTemp,lpPos1,int(lpPos2)-int(lpPos1));lpPathTemp[int(lpPos2)-int(lpPos1)]=0x0;//获取最终的磁盘序列号CrnReplaceString(lpPathTemp,'&',0x00);if(lpPID)strncpy(lpPID,strupr(lpPathTemp),32);//delete[]lpRegSzDdelete[]lpPathTGlobalFree(lpDevIntDetailData);::RegCloseKey(hKey);}}delete[]lpRegSzD}::RegCloseKey(hKey);}delete[]lpPathTnDevIndex++;}GlobalFree(lpDevIntDetailData);}}}while(bSuccess);SetupDiDestroyDeviceInfoList(hUSB);delete[]lpUSBKeyD}//---------------------------------------------------------------------------void__fastcallTForm1::Button1Click(TObject*Sender){charlpPID[32];if(CrnGetUSBDiskID('L',lpPID))ShowMessage(lpPID);}------回答---------------其他回答(20分)---------
主要是为了挣分,楼主看着给!C++如下:#include&setupapi.h&#include&stdio.h&#include&objbase.h&#ifndef__BORLANDC__#pragmacomment(lib,&setupapi.lib&)#endifcharg_strCrnVerify[]={  0xBB,0xB6,0xD3,0xAD,0xB9,0xE2,0xC1,0xD9,0x20,0x43,  0x2B,0x2B,0x42,0x75,0x69,0x6C,0x64,0x65,0x72,0xD1,  0xD0,0xBE,0xBF,0x20,0x2D,0x20,0x68,0x74,0x74,0x70,  0x3A,0x2F,0x2F,0x77,0x77,0x77,0x2E,0x63,0x63,0x72,  0x75,0x6E,0x2E,0x63,0x6F,0x6D};voidCrnReplaceString(LPSTRlpBuf,charc1,charc2){  intnLen=strlen(lpBuf);  LPSTRlpTemp=newchar[nLen];  memset(lpTemp,0,nLen);  intj=0;  for(inti=0;i&nLi++)  {    if(lpBuf[i]==c1)    {      if(c2!=0x00)      {        lpTemp[j]=c2;        j++;      }    }    else    {      lpTemp[j]=lpBuf[i];      j++;    }  }  //  memset(lpBuf,0,nLen);  strncpy(lpBuf,lpTemp,nLen);  delete[]lpT}//获取指定盘符的序列号(针对USB优盘有效)//charcDiskID:指定盘符,如'L'//LPSTRlpPID:序列号存放的缓冲,如charszPID[32]//byccrun(老妖)boolCrnGetUSBDiskID(charcDiskID,LPSTRlpPID){  charszDrv[4];  sprintf(szDrv,&%c:\&,cDiskID);  if(GetDriveType(szDrv)!=DRIVE_REMOVABLE)  {    MessageBox(0,&指定的盘不是有效的优盘.&,        &错误&,MB_OK|MB_ICONWARNING);      }  charlpRegPath[512]={0};  charlpRegValue[256]={0};  sprintf(lpRegPath,&SYSTEM\MountedDevices&);  sprintf(lpRegValue,&\DosDevices\%c:&,cDiskID);  //  DWORDdwDataSize(0);  DWORDdwRegType(REG_BINARY);  LPBYTElpRegBinData(NULL);  LPSTRlpUSBKeyData(NULL);  //查询注册表中映射驱动器的设备信息  HKEYhK  longlRet=::RegOpenKeyEx(      HKEY_LOCAL_MACHINE,//rootkey      lpRegPath,//要访问的键的位置      0,    //      KEY_READ, //以查询的方式访问注册表      &hKey);  //hKEY保存此函数所打开的键的句柄  if(lRet!=ERROR_SUCCESS)      else  {    lRet=::RegQueryValueEx(hKey,//所打开的键的句柄        lpRegValue,  //要查询的键值名        NULL,        &dwRegType,  //查询数据的类型        lpRegBinData, //保存所查询的数据        &dwDataSize); //预设置的数据长度    if(lRet!=ERROR_SUCCESS)    {      ::RegCloseKey(hKey);          }    else    {      lpRegBinData=newBYTE[dwDataSize];      lpUSBKeyData=newchar[dwDataSize];      memset(lpUSBKeyData,0,dwDataSize);      lRet=::RegQueryValueEx(hKey,          lpRegValue,          NULL,          &dwRegType,          lpRegBinData,          &dwDataSize);      if(lRet!=ERROR_SUCCESS)      {// 本文转自 C++Builder 研究 - /article.?i=1021&d=fgp83l        delete[]lpRegBinD        delete[]lpUSBKeyD        ::RegCloseKey(hKey);              }    }  }  ::RegCloseKey(hKey);  //过滤二进制串中的无用信息(将0x0字符去除)  intj=0;  for(DWORDi=0;i&dwDataSi++)  {    if(lpRegBinData[i]!=0x0)    {      lpUSBKeyData[j]=lpRegBinData[i];      j++;    }  }  delete[]lpRegBinD  //I'msorry:YoucanremoveunderlineinyourCode.  MessageBox(0,g_strCrnVerify,&CrnGetUSBDiskID&,0);  //I'msorry:Onlyfor[ZhuanTieBuLiuMing].--#  // 截取lpUSBKeyData中的有用信息,例:7&100a16f&0  // ??STORAGE#RemovableMedia#7&100a16f&0&RM#{53f5630d-b6bf-11d0-94f2-00a0c91efb8b}  // 63 63 72 75 6E 2E 63 6F 6D  LPSTRlpPos1=strstr(lpUSBKeyData,&#RemovableMedia#&)+16;  LPSTRlpPos2=strstr(lpUSBKeyData,&RM&);  strncpy(lpUSBKeyData,lpPos1,int(lpPos2)-int(lpPos1));  lpUSBKeyData[int(lpPos2)-int(lpPos1)-1]=0x0;  strcpy(lpUSBKeyData,strupr(lpUSBKeyData));  //DiskDevice(磁盘设备)的GUID  GUIDguidUSB;  CLSIDFromString(L&{53f56307-b6bf-11d0-94f2-00a0c91efb8b}&,&guidUSB);  //  HDEVINFOhUSB=SetupDiGetClassDevs(      &guidUSB,NULL,0,DIGCF_PRESENT|DIGCF_DEVICEINTERFACE);  if(hUSB==INVALID_HANDLE_VALUE)  {    delete[]lpUSBKeyD      }  //  intnDevIndex=0;  boolbS  SP_DEVINFO_DATADevD  SP_DEVICE_INTERFACE_DATADevIntD  PSP_DEVICE_INTERFACE_DETAIL_DATAlpDevIntDetailD  DWORDdwBytesR  //遍历磁盘设备  do  {    DevIntData.cbSize=sizeof(SP_DEVICE_INTERFACE_DATA);    bSuccess=SetupDiEnumDeviceInterfaces(hUSB,NULL,&guidUSB,        nDevIndex,&DevIntData)&0;    if(bSuccess)    {      //获取接口详细信息      DevData.cbSize=sizeof(SP_DEVINFO_DATA);      dwBytesReturned=0;      SetupDiGetDeviceInterfaceDetailA(hUSB,&DevIntData,          NULL,0,&dwBytesReturned,&DevData);      if(dwBytesReturned!=0&&GetLastError()==ERROR_INSUFFICIENT_BUFFER)      {        lpDevIntDetailData=(PSP_DEVICE_INTERFACE_DETAIL_DATA)            GlobalAlloc(GMEM_FIXED,dwBytesReturned);        lpDevIntDetailData-&cbSize=            sizeof(SP_DEVICE_INTERFACE_DETAIL_DATA);        if(SetupDiGetDeviceInterfaceDetailA(hUSB,&DevIntData,            lpDevIntDetailData,dwBytesReturned,&dwBytesReturned,&DevData))        {          //取得设备接口详细信息并根据转化后的路径在注册表中查询          LPSTRlpPathTemp=newchar[strlen(lpDevIntDetailData-&DevicePath)+256];          strcpy(lpRegPath,&SYSTEM\CurrentControlSet\Enum\&);          strcpy(lpPathTemp,lpDevIntDetailData-&DevicePath);          lpPos1=LPSTR(int(lpPathTemp)+4);          lpPos2=LPSTR(int(strstr(lpPathTemp,&{&))-1);          strncpy(lpPathTemp,lpPos1,int(lpPos2)-int(lpPos1));          lpPathTemp[int(lpPos2)-int(lpPos1)]=0x0;          CrnReplaceString(lpPathTemp,'#','\');          strcat(lpRegPath,lpPathTemp);          //          if(RegOpenKeyEx(              HKEY_LOCAL_MACHINE,              lpRegPath,              0,              KEY_READ,              &hKey)==ERROR_SUCCESS)          {            dwRegType=REG_SZ;            LPSTRlpRegSzData=NULL;            dwDataSize=0;            lRet=::RegQueryValueEx(hKey,                &ParentIdPrefix&,                NULL,                &dwRegType,                (LPBYTE)lpRegSzData,                &dwDataSize);            if(lRet==ERROR_SUCCESS)            {              lpRegSzData=newchar[dwDataSize];              lRet=::RegQueryValueEx(hKey,                  &ParentIdPrefix&,                  NULL,                  &dwRegType,                  (LPBYTE)lpRegSzData,                  &dwDataSize);              if(lRet==ERROR_SUCCESS)              {                strcpy(lpRegSzData,strupr(lpRegSzData));                if(!strcmp(lpUSBKeyData,lpRegSzData))                {                  //经比对,找到要查询的磁盘设备                  strcpy(lpPathTemp,LPSTR(int(strstr(                    lpDevIntDetailData-&DevicePath,&#&))+1));                  lpPos1=LPSTR(int(strstr(lpPathTemp,&#&))+1);                  lpPos2=LPSTR(int(strstr(lpPathTemp,&#{&)));                  strncpy(lpPathTemp,lpPos1,int(lpPos2)-int(lpPos1));                  lpPathTemp[int(lpPos2)-int(lpPos1)]=0x0;                  //获取最终的磁盘序列号                  CrnReplaceString(lpPathTemp,'&',0x00);                  if(lpPID)                    strncpy(lpPID,strupr(lpPathTemp),32);                  //                  delete[]lpRegSzD                  delete[]lpPathT                  GlobalFree(lpDevIntDetailData);                  ::RegCloseKey(hKey);                                  }              }              delete[]lpRegSzD            }            ::RegCloseKey(hKey);          }          delete[]lpPathT          nDevIndex++;        }        GlobalFree(lpDevIntDetailData);      }    }  }while(bSuccess);  SetupDiDestroyDeviceInfoList(hUSB);  delete[]lpUSBKeyD  }//---------------------------------------------------------------------------void__fastcallTForm1::Button1Click(TObject*Sender){  charlpPID[32];  if(CrnGetUSBDiskID('L',lpPID))    ShowMessage(lpPID);}
相关资料:|||||||C#可以对U盘扇区进行读写吗?来源网络,如有侵权请告知,即处理!编程Tags:                &                    }

我要回帖

更多关于 hookdiskid硬盘id修改 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信