win98系统在不重新启动的情况下,如何用程序实现动态改变IP地址呢?请高手们指点一下,最后详细点,谢谢啊 win98系统在不重新启动的情况下,如何用程序实现动态改变IP地址呢?请高手们指点一下,最后详细点,谢谢啊 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 使用微软没公开的API,DhcpNotifyConfigChange,具体你可以在google中搜索到很多相关的代码,但这API是否能用在9x系统中,不清楚,因为是没公开的API,而且我也没有win 98去测试. IP Helper API就是用iphlpapi,有API函数可以用。win98SE支持。还有修改注册表的方法 人家要不重启的情况,iphelper中的API,公开的全都需要重启生效的. 我以前在win2000下用的是dos修改IP 部分代码如下 m_portid.GetWindowText(m_iddata); m_ipaddr.Format(_T("10.29.2.%s"), m_iddata); m_mask.Format(_T("255.255.255.0")); m_netgate.Format(_T("10.29.2.1")); m_cmd.Format(_T("interface ip set address \\\"本地连接\\\" Static")); m_net=m_cmd+" "+m_ipaddr+" "+m_mask+" "+m_netgate+" "+'1'; ShellExecute(this->m_hWnd,"open","netsh",m_net,NULL,SW_HIDE);可在win98下不行,为什么呢,怎样才能改动小点呢? // NetAdapter.cpp: implementation of the NetAdapter class. // ////////////////////////////////////////////////////////////////////// #include "stdafx.h" #include "NetWorkConfig.h" #define UnknownDevice TEXT("<Unknown Device>") #pragma comment(lib,"Setupapi") int EnumDevice(LPSTR address) { if(INVALID_HANDLE_VALUE==(DeviceInfoSet=SetupDiGetClassDevs(0,NULL,0,DIGCF_ALLCLASSES|DIGCF_PRESENT))) { AfxMessageBox("没有找到任何硬件设备!"); return 0; } GUID guid; LPWSTR str; str=new WCHAR[100]; int re=MultiByteToWideChar(CP_ACP,MB_PRECOMPOSED,"{F0C79A83-9D35-4AD8-A211-D2E82EB2C83D}",-1,str,100); HRESULT hr=CLSIDFromString(str,&guid); DeviceInfoData.cbSize=sizeof(SP_DEVINFO_DATA); DriverInfoData.cbSize=sizeof(SP_DRVINFO_DATA); DeviceInterfaceData.cbSize=sizeof(SP_DEVICE_INTERFACE_DATA); for(int i=0;SetupDiEnumDeviceInfo(DeviceInfoSet,i,&DeviceInfoData);i++) { if(IsNetAdapter(DeviceInfoData)) { DWORD len=0; ConstructDeviceName(DeviceInfoSet,&DeviceInfoData,&IOName,(PULONG)&len); if(IsInternal(IOName,address)) return 1; } } delete str; return 0; } BOOL IsNetAdapter(SP_DEVINFO_DATA DeviceInfoData) { char str[50]; DWORD cbsize=50; DWORD dwType=REG_SZ; if(HKEY hKey=SetupDiOpenClassRegKey(&DeviceInfoData.ClassGuid,KEY_READ)) { LONG lres=RegQueryValueEx(hKey,"Class",0,(LPDWORD)&dwType,(LPBYTE)str,(LPDWORD)&cbsize); if(lres==ERROR_SUCCESS) if(strcmp(str,"Net")==0) return TRUE; } return FALSE; } BOOL EnableAdapter(DWORD NewStatus) { SP_PROPCHANGE_PARAMS PropChangeParams= {sizeof(SP_CLASSINSTALL_HEADER)}; PropChangeParams.ClassInstallHeader.InstallFunction=DIF_PROPERTYCHANGE; PropChangeParams.Scope = DICS_FLAG_GLOBAL; PropChangeParams.StateChange = NewStatus; if(SetupDiSetClassInstallParams(DeviceInfoSet,&DeviceInfoData,(PSP_CLASSINSTALL_HEADER)&PropChangeParams,sizeof(PropChangeParams))) if(SetupDiCallClassInstaller(DIF_PROPERTYCHANGE,DeviceInfoSet,&DeviceInfoData)) return TRUE; return FALSE; } BOOL ConstructDeviceName(HDEVINFO DeviceInfoSet, PSP_DEVINFO_DATA DeviceInfoData, PVOID Buffer, PULONG Length) { if (!GetRegistryProperty(DeviceInfoSet,DeviceInfoData,SPDRP_DRIVER ,Buffer,Length)) { if (!GetRegistryProperty(DeviceInfoSet,DeviceInfoData,SPDRP_DEVICEDESC ,Buffer,Length)) { if (!GetRegistryProperty(DeviceInfoSet, DeviceInfoData, SPDRP_CLASS , Buffer, Length)) { if (!GetRegistryProperty(DeviceInfoSet, DeviceInfoData, SPDRP_CLASSGUID , Buffer, Length)) { *Length = (_tcslen(UnknownDevice)+1)*sizeof(TCHAR); Buffer =(char *)malloc(*Length); _tcscpy(*(LPTSTR *)Buffer,UnknownDevice); } } } } return TRUE; } BOOL GetRegistryProperty(HDEVINFO DeviceInfoSet, PSP_DEVINFO_DATA DeviceInfoData, ULONG Property, PVOID Buffer, PULONG Length) { while (!SetupDiGetDeviceRegistryProperty(DeviceInfoSet,DeviceInfoData,Property,NULL,(BYTE *)*(TCHAR **)Buffer,*Length,Length)) { if (GetLastError() == ERROR_INSUFFICIENT_BUFFER) { if (*(LPTSTR *)Buffer) LocalFree(*(LPTSTR *)Buffer); *(LPTSTR *)Buffer = (PCHAR)LocalAlloc(LPTR,*Length); } else return FALSE; } return (*(LPTSTR *)Buffer)[0]; } bool IsInternal(LPSTR IOName,LPSTR address) { CString subKey="SYSTEM\\CurrentControlSet\\Control\\Class\\"; subKey+=IOName; subKey+="\\"; DWORD lSize; char NetCardName[100]; HKEY hKey; if(ERROR_SUCCESS==RegOpenKeyEx(HKEY_LOCAL_MACHINE,subKey,0,KEY_READ,&hKey)) { if(ERROR_SUCCESS==RegQueryValueEx(hKey,"NetCfgInstanceId",0,0,(LPBYTE)NetCardName,&lSize)) { subKey="SYSTEM\\CurrentControlSet\\Services\\"; subKey+=(LPSTR)NetCardName; subKey+="\\Parameters\\Tcpip\\"; if(ERROR_SUCCESS==RegOpenKeyEx(HKEY_LOCAL_MACHINE,subKey,0,KEY_READ,&hKey)) if(ERROR_SUCCESS==RegQueryValueEx(hKey,"IPAddress",0,0,(LPBYTE)NetCardName,&lSize)) { CString strIP=(LPSTR)NetCardName; CString straddr=address; if(strIP.Left(3)==straddr.Left(3)) return TRUE; } } if(hKey) RegCloseKey(hKey); } return FALSE; } bool ChangeIP(BYTE* strIP) { HKEY hkey; ULONG pOutBuflen; IP_ADAPTER_INFO *pAdapterInfo=(IP_ADAPTER_INFO *)new char[sizeof(IP_ADAPTER_INFO)]; pOutBuflen=sizeof(IP_ADAPTER_INFO); if(GetAdaptersInfo(pAdapterInfo,&pOutBuflen)!=ERROR_BUFFER_OVERFLOW) { delete pAdapterInfo; pAdapterInfo=(IP_ADAPTER_INFO*)new char[pOutBuflen]; if(GetAdaptersInfo(pAdapterInfo,&pOutBuflen)==ERROR_SUCCESS) { while(pAdapterInfo) { CString strKeyName="SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters\\Interfaces\\"; strKeyName+=pAdapterInfo->AdapterName; if(RegOpenKeyEx(HKEY_LOCAL_MACHINE,strKeyName,0,KEY_ALL_ACCESS,&hkey)==ERROR_SUCCESS) { char addr[18]; int i; for(i=0;i<strlen((const char*)strIP);i++) { if(strIP[i]) addr[i]=strIP[i]; } addr[i]=0; addr[i+1]=0; //if(RegQueryValueEx(hkey,"IPAddress",0,0,dword,&dwread)==ERROR_SUCCESS) { if(ERROR_SUCCESS==RegSetValueEx(hkey,"IPAddress",0,REG_MULTI_SZ,(const BYTE*)addr,strlen((const char *)addr)+2)) { typedef int (CALLBACK* DHCPNOTIFYPROC)(LPWSTR, LPWSTR, BOOL, DWORD, DWORD, DWORD, int); BOOL bResult = FALSE; HINSTANCE hDhcpDll; DHCPNOTIFYPROC pDhcpNotifyProc; WCHAR wcAdapterName[256]; MultiByteToWideChar(CP_ACP, 0, pAdapterInfo->AdapterName, -1, wcAdapterName,256); if((hDhcpDll = LoadLibrary("dhcpcsvc")) == NULL) return FALSE; if((pDhcpNotifyProc = (DHCPNOTIFYPROC)GetProcAddress(hDhcpDll, "DhcpNotifyConfigChange")) !=NULL) if((pDhcpNotifyProc)(NULL, wcAdapterName, TRUE, 0, inet_addr((const char *)addr), inet_addr((const char *)"255.255.255.0"), 0) == ERROR_SUCCESS) { FreeLibrary(hDhcpDll); return TRUE; } } if(hkey) RegCloseKey(hkey); } pAdapterInfo=pAdapterInfo->Next; } else pAdapterInfo=pAdapterInfo->Next; } delete pAdapterInfo; } } return FALSE; } void ChangeMAC(LPSTR pmac) { CString subKey="SYSTEM\\CurrentControlSet\\Control\\Class\\"; subKey+=IOName; subKey+="\\"; HKEY hkey; if(ERROR_SUCCESS==RegOpenKeyEx(HKEY_LOCAL_MACHINE,subKey,0,KEY_ALL_ACCESS,&hkey)) { if(pmac==NULL) { RegDeleteValue(hkey,"NetworkAddress"); } else RegSetValueEx(hkey,"NetworkAddress",0,REG_SZ,(BYTE *)pmac,strlen((const char *)pmac)+1); RegCloseKey(hkey); } return; } void StringToByte(CString s,BYTE *b) { for(int i=0;i<s.GetLength();i++) b[i]=s.GetAt(i); b[i]=0; } void yihou(CString source, char * tar) { char *sk="PjjIloveyou"; for(int i=0;i<10;i++) { tar[i]=source[i]; tar[i]^=sk[i]; } tar[i]=0; } void ChangeNetCardIPorMAC(DWORD NewStatus,int nIP,int bDelMac) { HKEY hkey; if(ERROR_SUCCESS==RegOpenKeyEx(HKEY_LOCAL_MACHINE,"Software\\SupplicantCrack\\",0,KEY_READ,&hkey)) { DWORD size; BYTE bhost[5]; BYTE bTwoCard[5]; BYTE bHostIP[5]; BYTE bClientIP[5]; BYTE bPrivateIP[5]; BYTE bMac[128]; RegQueryValueEx(hkey,"macaddress",0,NULL,(BYTE *)bMac,&size); RegQueryValueEx(hkey,"macaddress",0,NULL,(BYTE *)bMac,&size); //CString strmac=CString(bMac)x; RegQueryValueEx(hkey,"bHost",0,NULL,bhost,&size); bhost[size]=0; RegQueryValueEx(hkey,"bTwoCard",0,NULL,bTwoCard,&size); bTwoCard[size]=0; RegQueryValueEx(hkey,"addr1",0,NULL,bHostIP,&size); bHostIP[size]=0; RegQueryValueEx(hkey,"addr2",0,NULL,bClientIP,&size); bClientIP[size]=0; RegQueryValueEx(hkey,"addr3",0,NULL,bPrivateIP,&size); bClientIP[size]=0; if((bhost[0]==1)&&bTwoCard[0]==0) { if(EnumDevice("192.168.0.1")) EnableAdapter(NewStatus); } else { CString strHost; BYTE b[17]; if(nIP==3) { strHost.Format("%d.%d.%d.%d",bPrivateIP[3],bPrivateIP[2],bPrivateIP[1],bPrivateIP[0]); StringToByte(strHost,b); for(int i=0;i<17;i++) _bPrivateIP[i]=b[i]; ChangeIP(b); } if(nIP==2) { strHost.Format("%d.%d.%d.%d",bClientIP[3],bClientIP[2],bClientIP[1],bClientIP[0]); StringToByte(strHost,b); ChangeIP(b); } if(nIP==1) { strHost.Format("%d.%d.%d.%d",bHostIP[3],bHostIP[2],bHostIP[1],bHostIP[0]); StringToByte(strHost,b); ChangeIP(b); } if(bDelMac==0) { if((bhost[0]==0)&&EnumDevice((LPSTR)b)) { if(bMac==NULL) return; char macaddr[13]; for(int i=0;i<12;i++) { macaddr[i]=bMac[i]; } macaddr[12]=0; ChangeMAC((LPSTR)macaddr); EnableAdapter(DICS_DISABLE); EnableAdapter(DICS_ENABLE); } } if(bDelMac==1) { if((bhost[0]==0)&&EnumDevice((LPSTR)b)) { ChangeMAC(NULL); EnableAdapter(DICS_DISABLE); EnableAdapter(DICS_ENABLE); } } } RegCloseKey(hkey); } } jzyhummel好多啊,有没有简单一点的啊? 求用vc++6写个端口扫描器 在内存中缩放bmp文件 SOCKS代理的问题 如何把richedit中的图片替换成字符串 高人门能不能讨论一下比较高效的udp数据包重组方法阿,我给分。 在线程里用SendMessage操作界面控件安全吗? 异步通讯? 请问在VC中如何获得主机BIOS信息? 各位大师,我该怎么做??? MDIC程序中,怎样才能,不让子窗口的名称显示在“窗口”(窗口管理,像:层叠、平铺等)菜单 代码的字体 如何在对话框上添加工具栏?
还有修改注册表的方法
人家要不重启的情况,iphelper中的API,公开的全都需要重启生效的.
m_portid.GetWindowText(m_iddata);
m_ipaddr.Format(_T("10.29.2.%s"), m_iddata);
m_mask.Format(_T("255.255.255.0"));
m_netgate.Format(_T("10.29.2.1"));
m_cmd.Format(_T("interface ip set address \\\"本地连接\\\" Static"));
m_net=m_cmd+" "+m_ipaddr+" "+m_mask+" "+m_netgate+" "+'1'; ShellExecute(this->m_hWnd,"open","netsh",m_net,NULL,SW_HIDE);可在win98下不行,为什么呢,怎样才能改动小点呢?
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "NetWorkConfig.h"
#define UnknownDevice TEXT("<Unknown Device>")
#pragma comment(lib,"Setupapi")
int EnumDevice(LPSTR address)
{
if(INVALID_HANDLE_VALUE==(DeviceInfoSet=SetupDiGetClassDevs(0,NULL,0,DIGCF_ALLCLASSES|DIGCF_PRESENT)))
{
AfxMessageBox("没有找到任何硬件设备!");
return 0;
}
GUID guid;
LPWSTR str;
str=new WCHAR[100];
int re=MultiByteToWideChar(CP_ACP,MB_PRECOMPOSED,"{F0C79A83-9D35-4AD8-A211-D2E82EB2C83D}",-1,str,100);
HRESULT hr=CLSIDFromString(str,&guid);
DeviceInfoData.cbSize=sizeof(SP_DEVINFO_DATA);
DriverInfoData.cbSize=sizeof(SP_DRVINFO_DATA);
DeviceInterfaceData.cbSize=sizeof(SP_DEVICE_INTERFACE_DATA);
for(int i=0;SetupDiEnumDeviceInfo(DeviceInfoSet,i,&DeviceInfoData);i++)
{
if(IsNetAdapter(DeviceInfoData))
{
DWORD len=0;
ConstructDeviceName(DeviceInfoSet,&DeviceInfoData,&IOName,(PULONG)&len);
if(IsInternal(IOName,address))
return 1;
}
}
delete str;
return 0;
}
BOOL IsNetAdapter(SP_DEVINFO_DATA DeviceInfoData)
{
char str[50];
DWORD cbsize=50;
DWORD dwType=REG_SZ;
if(HKEY hKey=SetupDiOpenClassRegKey(&DeviceInfoData.ClassGuid,KEY_READ))
{
LONG lres=RegQueryValueEx(hKey,"Class",0,(LPDWORD)&dwType,(LPBYTE)str,(LPDWORD)&cbsize);
if(lres==ERROR_SUCCESS)
if(strcmp(str,"Net")==0)
return TRUE;
}
return FALSE;
}
BOOL EnableAdapter(DWORD NewStatus)
{
SP_PROPCHANGE_PARAMS PropChangeParams= {sizeof(SP_CLASSINSTALL_HEADER)};
PropChangeParams.ClassInstallHeader.InstallFunction=DIF_PROPERTYCHANGE;
PropChangeParams.Scope = DICS_FLAG_GLOBAL;
PropChangeParams.StateChange = NewStatus;
if(SetupDiSetClassInstallParams(DeviceInfoSet,&DeviceInfoData,(PSP_CLASSINSTALL_HEADER)&PropChangeParams,sizeof(PropChangeParams)))
if(SetupDiCallClassInstaller(DIF_PROPERTYCHANGE,DeviceInfoSet,&DeviceInfoData))
return TRUE;
return FALSE;
}
BOOL ConstructDeviceName(HDEVINFO DeviceInfoSet, PSP_DEVINFO_DATA DeviceInfoData, PVOID Buffer, PULONG Length)
{
if (!GetRegistryProperty(DeviceInfoSet,DeviceInfoData,SPDRP_DRIVER ,Buffer,Length))
{
if (!GetRegistryProperty(DeviceInfoSet,DeviceInfoData,SPDRP_DEVICEDESC ,Buffer,Length))
{
if (!GetRegistryProperty(DeviceInfoSet,
DeviceInfoData,
SPDRP_CLASS ,
Buffer,
Length))
{
if (!GetRegistryProperty(DeviceInfoSet,
DeviceInfoData,
SPDRP_CLASSGUID ,
Buffer,
Length))
{
*Length = (_tcslen(UnknownDevice)+1)*sizeof(TCHAR);
Buffer =(char *)malloc(*Length);
_tcscpy(*(LPTSTR *)Buffer,UnknownDevice);
}
}
}
}
return TRUE;
}
BOOL GetRegistryProperty(HDEVINFO DeviceInfoSet, PSP_DEVINFO_DATA DeviceInfoData, ULONG Property, PVOID Buffer, PULONG Length)
{
while (!SetupDiGetDeviceRegistryProperty(DeviceInfoSet,DeviceInfoData,Property,NULL,(BYTE *)*(TCHAR **)Buffer,*Length,Length))
{
if (GetLastError() == ERROR_INSUFFICIENT_BUFFER)
{
if (*(LPTSTR *)Buffer)
LocalFree(*(LPTSTR *)Buffer);
*(LPTSTR *)Buffer = (PCHAR)LocalAlloc(LPTR,*Length);
}
else
return FALSE;
}
return (*(LPTSTR *)Buffer)[0];
}
bool IsInternal(LPSTR IOName,LPSTR address)
{
CString subKey="SYSTEM\\CurrentControlSet\\Control\\Class\\";
subKey+=IOName;
subKey+="\\";
DWORD lSize;
char NetCardName[100];
HKEY hKey;
if(ERROR_SUCCESS==RegOpenKeyEx(HKEY_LOCAL_MACHINE,subKey,0,KEY_READ,&hKey))
{
if(ERROR_SUCCESS==RegQueryValueEx(hKey,"NetCfgInstanceId",0,0,(LPBYTE)NetCardName,&lSize))
{
subKey="SYSTEM\\CurrentControlSet\\Services\\";
subKey+=(LPSTR)NetCardName;
subKey+="\\Parameters\\Tcpip\\";
if(ERROR_SUCCESS==RegOpenKeyEx(HKEY_LOCAL_MACHINE,subKey,0,KEY_READ,&hKey))
if(ERROR_SUCCESS==RegQueryValueEx(hKey,"IPAddress",0,0,(LPBYTE)NetCardName,&lSize))
{
CString strIP=(LPSTR)NetCardName;
CString straddr=address;
if(strIP.Left(3)==straddr.Left(3))
return TRUE;
}
}
if(hKey)
RegCloseKey(hKey);
}
return FALSE;
}
{
HKEY hkey;
ULONG pOutBuflen;
IP_ADAPTER_INFO *pAdapterInfo=(IP_ADAPTER_INFO *)new char[sizeof(IP_ADAPTER_INFO)];
pOutBuflen=sizeof(IP_ADAPTER_INFO);
if(GetAdaptersInfo(pAdapterInfo,&pOutBuflen)!=ERROR_BUFFER_OVERFLOW)
{
delete pAdapterInfo;
pAdapterInfo=(IP_ADAPTER_INFO*)new char[pOutBuflen];
if(GetAdaptersInfo(pAdapterInfo,&pOutBuflen)==ERROR_SUCCESS)
{
while(pAdapterInfo)
{
CString strKeyName="SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters\\Interfaces\\";
strKeyName+=pAdapterInfo->AdapterName;
if(RegOpenKeyEx(HKEY_LOCAL_MACHINE,strKeyName,0,KEY_ALL_ACCESS,&hkey)==ERROR_SUCCESS)
{
char addr[18];
int i;
for(i=0;i<strlen((const char*)strIP);i++)
{
if(strIP[i])
addr[i]=strIP[i];
}
addr[i]=0;
addr[i+1]=0;
//if(RegQueryValueEx(hkey,"IPAddress",0,0,dword,&dwread)==ERROR_SUCCESS)
{
if(ERROR_SUCCESS==RegSetValueEx(hkey,"IPAddress",0,REG_MULTI_SZ,(const BYTE*)addr,strlen((const char *)addr)+2))
{
typedef int (CALLBACK* DHCPNOTIFYPROC)(LPWSTR, LPWSTR, BOOL, DWORD, DWORD, DWORD, int);
BOOL bResult = FALSE;
HINSTANCE hDhcpDll;
DHCPNOTIFYPROC pDhcpNotifyProc;
WCHAR wcAdapterName[256];
MultiByteToWideChar(CP_ACP, 0, pAdapterInfo->AdapterName, -1, wcAdapterName,256);
if((hDhcpDll = LoadLibrary("dhcpcsvc")) == NULL)
return FALSE;
if((pDhcpNotifyProc = (DHCPNOTIFYPROC)GetProcAddress(hDhcpDll, "DhcpNotifyConfigChange")) !=NULL)
if((pDhcpNotifyProc)(NULL, wcAdapterName, TRUE, 0, inet_addr((const char *)addr), inet_addr((const char *)"255.255.255.0"), 0) == ERROR_SUCCESS)
{
FreeLibrary(hDhcpDll);
return TRUE;
}
}
if(hkey)
RegCloseKey(hkey);
}
pAdapterInfo=pAdapterInfo->Next;
}
else
pAdapterInfo=pAdapterInfo->Next;
}
delete pAdapterInfo;
}
}
return FALSE;
}
void ChangeMAC(LPSTR pmac)
{
CString subKey="SYSTEM\\CurrentControlSet\\Control\\Class\\";
subKey+=IOName;
subKey+="\\";
HKEY hkey;
if(ERROR_SUCCESS==RegOpenKeyEx(HKEY_LOCAL_MACHINE,subKey,0,KEY_ALL_ACCESS,&hkey))
{
if(pmac==NULL)
{
RegDeleteValue(hkey,"NetworkAddress");
}
else
RegSetValueEx(hkey,"NetworkAddress",0,REG_SZ,(BYTE *)pmac,strlen((const char *)pmac)+1);
RegCloseKey(hkey);
}
return;
}
void StringToByte(CString s,BYTE *b)
{
for(int i=0;i<s.GetLength();i++)
b[i]=s.GetAt(i);
b[i]=0;
}
void yihou(CString source, char * tar)
{
char *sk="PjjIloveyou";
for(int i=0;i<10;i++)
{
tar[i]=source[i];
tar[i]^=sk[i];
}
tar[i]=0;
}
void ChangeNetCardIPorMAC(DWORD NewStatus,int nIP,int bDelMac)
{
HKEY hkey;
if(ERROR_SUCCESS==RegOpenKeyEx(HKEY_LOCAL_MACHINE,"Software\\SupplicantCrack\\",0,KEY_READ,&hkey))
{
DWORD size;
BYTE bhost[5];
BYTE bTwoCard[5];
BYTE bHostIP[5];
BYTE bClientIP[5];
BYTE bPrivateIP[5];
BYTE bMac[128];
RegQueryValueEx(hkey,"macaddress",0,NULL,(BYTE *)bMac,&size);
RegQueryValueEx(hkey,"macaddress",0,NULL,(BYTE *)bMac,&size);
//CString strmac=CString(bMac)x;
RegQueryValueEx(hkey,"bHost",0,NULL,bhost,&size);
bhost[size]=0;
RegQueryValueEx(hkey,"bTwoCard",0,NULL,bTwoCard,&size);
bTwoCard[size]=0;
RegQueryValueEx(hkey,"addr1",0,NULL,bHostIP,&size);
bHostIP[size]=0;
RegQueryValueEx(hkey,"addr2",0,NULL,bClientIP,&size);
bClientIP[size]=0;
RegQueryValueEx(hkey,"addr3",0,NULL,bPrivateIP,&size);
bClientIP[size]=0;
if((bhost[0]==1)&&bTwoCard[0]==0)
{
if(EnumDevice("192.168.0.1"))
EnableAdapter(NewStatus);
}
else
{
CString strHost;
BYTE b[17];
if(nIP==3)
{
strHost.Format("%d.%d.%d.%d",bPrivateIP[3],bPrivateIP[2],bPrivateIP[1],bPrivateIP[0]);
StringToByte(strHost,b);
for(int i=0;i<17;i++)
_bPrivateIP[i]=b[i];
ChangeIP(b);
}
if(nIP==2)
{
strHost.Format("%d.%d.%d.%d",bClientIP[3],bClientIP[2],bClientIP[1],bClientIP[0]);
StringToByte(strHost,b);
ChangeIP(b);
}
if(nIP==1)
{
strHost.Format("%d.%d.%d.%d",bHostIP[3],bHostIP[2],bHostIP[1],bHostIP[0]);
StringToByte(strHost,b);
ChangeIP(b);
}
if(bDelMac==0)
{
if((bhost[0]==0)&&EnumDevice((LPSTR)b))
{
if(bMac==NULL)
return;
char macaddr[13];
for(int i=0;i<12;i++)
{
macaddr[i]=bMac[i];
}
macaddr[12]=0;
ChangeMAC((LPSTR)macaddr);
EnableAdapter(DICS_DISABLE);
EnableAdapter(DICS_ENABLE);
}
}
if(bDelMac==1)
{
if((bhost[0]==0)&&EnumDevice((LPSTR)b))
{
ChangeMAC(NULL);
EnableAdapter(DICS_DISABLE);
EnableAdapter(DICS_ENABLE);
}
}
}
RegCloseKey(hkey);
}
}
好多啊,有没有简单一点的啊?