看看这样读注册表对不对?
char path[254]="SYSTEM\\CurrentControlSet\\Control\\Network\\{4D36E972-E325-11CE-BFC1-08002BE10318}\\";//这个是预写好的//pTemppip->AdapterName是从系统API读过来的网卡编号,类似是{C31B0A6A-3265-4E19-82A7-C9C6B26EEC6C} //pSourceip是从系统API读过来的网卡列表信息的首地址//iadapternum是网卡的个数//下面这段代码的意思是循环各个网卡的编号,然后从注册表读网卡的名字。匹配是否有网卡名叫NETA和NETB的。 pTemppip=pSourceip; for(int i=0;i<iadapternum;i++) { char TempPath[500]={0}; strcat(TempPath,path); strcat(TempPath,pTemppip->AdapterName); strcat(TempPath,"\\Connection"); int ret=RegOpenKeyEx(HKEY_LOCAL_MACHINE,(LPCTSTR)TempPath,0,KEY_READ,&hKey); if(ret==ERROR_SUCCESS) { BYTE name[MAX_PATH]={0}; DWORD bufLen=MAX_PATH; DWORD type_1=REG_SZ; ret=RegQueryValueEx(hKey,"Name",NULL,&type_1,(LPBYTE)name,&bufLen); if(ret==ERROR_SUCCESS) { if(strcmp((char *)name,"NETA")==0) { g_bHaveSnetA=TRUE; m_SnetAIndex=pTemppip->Index; } if(strcmp((char *)name,"NETB")==0) { g_bHaveSnetB=TRUE; m_SnetBIndex=pTemppip->Index; } } RegCloseKey( hKey ); } pTemppip=pTemppip->Next; if(pTemppip==NULL) break; }
HKEY hKey; char szProductType[BUFSIZE]; DWORD dwBufLen=BUFSIZE; LONG lRet; lRet = RegOpenKeyEx( HKEY_LOCAL_MACHINE, "SYSTEM\\CurrentControlSet\\Control\\ProductOptions", 0, KEY_QUERY_VALUE, &hKey ); if( lRet != ERROR_SUCCESS ) return FALSE; lRet = RegQueryValueEx( hKey, "ProductType", NULL, NULL, (LPBYTE) szProductType, &dwBufLen); if( (lRet != ERROR_SUCCESS) || (dwBufLen > BUFSIZE) ) return FALSE; RegCloseKey( hKey );
[解决办法]
看这像是指针错误,应该跟读注册表没关系吧。
好好调试一下。
[解决办法]
检查字符串操作...
[解决办法]
name==NULL???????