用GetAdaptersInfo
我可以从AdapterName属性中得到注册表的键值
从Address中得到Mac地址
但拨号连接没连接时。。都得不到的。。
我用RasEnumEntries可以得到拨号的名称
请问各位高手。。没连接时。。
有什么方法可以得到一个拨号连接在注册表的键值或者MAC地址分不够。。我加。。
请记得是拨号连接而且是没连接时的
我可以从AdapterName属性中得到注册表的键值
从Address中得到Mac地址
但拨号连接没连接时。。都得不到的。。
我用RasEnumEntries可以得到拨号的名称
请问各位高手。。没连接时。。
有什么方法可以得到一个拨号连接在注册表的键值或者MAC地址分不够。。我加。。
请记得是拨号连接而且是没连接时的
解决方案 »
- ICE 又懂得没
- 问一个模板类的问题,请进
- 今天终于学会了如何给分了,真是对不起以前帮我的兄弟,发帖庆祝一下,顺便问一个问题。
- 很简单的VC中用ADO连接数据库的程序??
- 几个图形绘制小问题!望赐教!
- 请教一个关于文件保存的问题
- 关于右键菜单的一个问题,请指点小弟!!
- 学网络编程究竟应该学些什么
- 怎么用DX播放mp3
- 恳请高手执教 ::GetFrame( HCAPTURE hCapture, DWORD FrameNumber )如何用参数都是什么意思?
- 狂晕,怎么找不到OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)函数啊??
- 请问一个24位CBitmap的数据情况
程序只考虑2000及XP。。9X系列不考虑
RasGetEntryPerPerties也没见返回注册表的键值
如果有相关代码。。麻烦你copy出来一下
这个问题已经搞了一个星期了
我现在手上没有《Windows网络编程》
我找找来看
LPRASENTRYNAME lpTemp;
DWORD cbBuf;
DWORD cEntry;
DWORD dwRet;
UINT ndx; cbBuf = sizeof(RASENTRYNAME);
if ((lpRasEntry = ( LPRASENTRYNAME ) _fmalloc((UINT)cbBuf)) != NULL )
{
lpRasEntry->dwSize = sizeof(RASENTRYNAME);
dwRet = RasEnumEntries( NULL, NULL, lpRasEntry, &cbBuf, &cEntry );
if ( dwRet == ERROR_BUFFER_TOO_SMALL )
{
if ((lpTemp = ( LPRASENTRYNAME ) _frealloc ( lpRasEntry, (UINT)cbBuf )) != NULL )
{
lpRasEntry = lpTemp;
dwRet = RasEnumEntries( NULL, NULL, lpRasEntry, &cbBuf, &cEntry );
}
else
{
dwRet = ERROR_NOT_ENOUGH_MEMORY;
}
}
else if ( dwRet != 0 ) // other error
{
if ( RasGetErrorString( (UINT)dwRet, szMessage, 256 ) != 0 )
{
}
} RASENTRY rasEntry;
DWORD dwCountryCode=0;
LPBYTE lpDeviceInfo;
DWORD EntryInfoSize=0,DeiveInfoSize=0;
DWORD nRet=0;
if((nRet=RasGetEntryProperties(NULL,"",&EntryInfoSize,NULL,&DeviceInfoSize))!=0)
{
if(nRet!=ERROR_BUIFFER_TOO_SMALL)
return;
}
if(DeviceInfoSize==0)
lpDeviceInfo=NULL;
else
lpDeviceInfo=(LPBYTE)GlobalAlloc(GPTR,DeviceInfoSize);
rasEntry.dwSize=sizeof(RASENTRY);
if ( dwRet == 0 ) // No errors
{
for ( ndx = 0; ndx < cEntry; ndx++ )
{
RasGetEntryProperties(lpRasEntry[ndx].szPhonebookPath,lpRasEntry[ndx].szEntryName,&rasEntry,&nEntrySize,lpDeviceInfo,&DeviceInfoSize);
...
}
}
GlobalFree(lpDeviceInfo); _ffree( lpRasEntry );
}
是那一个属性呢
DWORD dwSize;
DWORD dwfOptions;
//
// Location/phone number.
//
DWORD dwCountryID;
DWORD dwCountryCode;
TCHAR szAreaCode[ RAS_MaxAreaCode + 1 ];
TCHAR szLocalPhoneNumber[ RAS_MaxPhoneNumber + 1 ];
DWORD dwAlternateOffset;
//
// PPP/Ip
//
RASIPADDR ipaddr;
RASIPADDR ipaddrDns;
RASIPADDR ipaddrDnsAlt;
RASIPADDR ipaddrWins;
RASIPADDR ipaddrWinsAlt;
//
// Framing
//
DWORD dwFrameSize;
DWORD dwfNetProtocols;
DWORD dwFramingProtocol;
//
// Scripting
//
TCHAR szScript[ MAX_PATH ];
//
// AutoDial
//
TCHAR szAutodialDll[ MAX_PATH ];
TCHAR szAutodialFunc[ MAX_PATH ];
//
// Device
//
TCHAR szDeviceType[ RAS_MaxDeviceType + 1 ];
TCHAR szDeviceName[ RAS_MaxDeviceName + 1 ];
//
// X.25
//
TCHAR szX25PadType[ RAS_MaxPadType + 1 ];
TCHAR szX25Address[ RAS_MaxX25Address + 1 ];
TCHAR szX25Facilities[ RAS_MaxFacilities + 1 ];
TCHAR szX25UserData[ RAS_MaxUserData + 1 ];
DWORD dwChannels;
//
// Reserved
//
DWORD dwReserved1;
DWORD dwReserved2;
#if (WINVER >= 0x401)
//
// Multilink and BAP
//
DWORD dwSubEntries;
DWORD dwDialMode;
DWORD dwDialExtraPercent;
DWORD dwDialExtraSampleSeconds;
DWORD dwHangUpExtraPercent;
DWORD dwHangUpExtraSampleSeconds;
//
// Idle time out
//
DWORD dwIdleDisconnectSeconds;
#endif
#if (WINVER >= 0x500)
DWORD dwType;
DWORD dwEncryptionType;
DWORD dwCustomAuthKey;
GUID guidId;
TCHAR szCustomDialDll[MAX_PATH];
DWORD dwVpnStrategy;
#endif
#if (WINVER >= 0x501)
DWORD dwfOptions2;
DWORD dwfOptions3;
TCHAR szDnsSuffix[RAS_MaxDnsSuffix];
DWORD dwTcpWindowSize;
TCHAR szPrerequisitePbk[MAX_PATH];
TCHAR szPrerequisiteEntry[RAS_MaxEntryName + 1];
DWORD dwRedialCount;
DWORD dwRedialPause;
#endif
} RASENTRY;
只是RasGetEntryProperties()后。。我打印了所有的属性出来
不见有键值什么存在
我明白。。我已经把RASENTRY翻了好几遍了。。
如果你知道怎么取得。。请直接告诉我怎么取的
{D773CC64-1090-4FC0-A52B-4F71783AC3C1}
如果拨号连接已经连上网络。。可以用GetAdaptersInfo得到这个键值
我现在要问的是在没连接上网络前。。有什么方法得到。。
http://www.codeguru.com/Cpp/I-N/network/dial-upnetworking/article.php/c2463/
在注册表里面
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\
里面存在了电脑里面所有的网络连接
每个连接都有这样的键值
{D773CC64-1090-4FC0-A52B-4F71783AC3C1}
当然拨号连接也在里面
我现在要知道的是根据拨号连接的属性怎么知道他是那个键值 。。
因为里面存在了很多连接。。
A的名字叫163..
b的名字叫169
我在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\RemoteAccess\Interfaces
里面怎么判断那个是163的。。那个是169的
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\{...}
和
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\RemoteAccess\Interfaces
并没有包括所有的网络连接
所有的是在
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\
里面。。
我现在用的是ADSL拨号连接。。
在你说的里面是没有的。。那里面保存的是局域连接的什么。。
而HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\
包含了所有使用TCP/IP的链接。
两个返回的szDeviceName都是WAN 微型端口(PPPOE)
怎么区分
RasEntry.ipaddr.a,RasEntry.ipaddr.b,RasEntry.ipaddr.c,RasEntry.ipaddr.d);
MessageBox(Str);
打印出RASENTRY中的ipaddr是空的
CString m_strDeviceName = m_DeviceName;
CString m_strDeviceType = "modem";
DWORD m_dwFramingProtocol = RASFP_Ppp;
DWORD m_dwfNetProtocols = RASNP_Ip/* | RASNP_Ipx |
DWORD m_dwfOptions = RASEO_IpHeaderCompression | RASEO_RemoteDefaultGateway | RASEO_ModemLights | RASEO_SecureLocalFiles;
RASENTRY rasEntry;
::ZeroMemory(&rasEntry, sizeof(rasEntry));
rasEntry.dwSize=sizeof(RASENTRY);
strcpy(rasEntry.szLocalPhoneNumber,m_strPLocalPhoneNumber); //连接名 strcpy(rasEntry.szDeviceName,m_strDeviceName); //设备名
strcpy(rasEntry.szDeviceType,m_strDeviceType); //设备类型
rasEntry.dwFramingProtocol = m_dwFramingProtocol;
rasEntry.dwfNetProtocols = m_dwfNetProtocols;
rasEntry.dwfOptions = m_dwfOptions;
CString tempStr = m_EntryName;
DWORD dwRt = RasSetEntryProperties(NULL, (char*)lpszEntry, &rasEntry, sizeof(rasEntry), NULL, 0);
可以上QQ吗
MSN:[email protected]