none
用RAS API函数创建新的连接,参数怎样才能保存到注册表中 RRS feed

  • 问题

  • 用以下代码创建连接“PPPOE”:

    ZeroMemory(lpRasEntry, sizeof(RASENTRY));
     lpRasEntry->dwSize = dwBufferSize;
     lpRasEntry->dwfOptions = RASEO_SwCompression|RASEO_RemoteDefaultGateway|RASEO_PreviewUserPw;
     //lpRasEntry->dwType = RASET_Broadband;

     lstrcpy(lpRasEntry->szDeviceType, RASDT_PPPoE);
     lstrcpy(lpRasEntry->szDeviceName, L"pppoe");
     lpRasEntry->dwfNetProtocols = RASNP_Ip;
     lpRasEntry->dwFramingProtocol = RASFP_Ppp;

     dwRet = RasSetEntryProperties(NULL, L"pppoe", lpRasEntry, dwBufferSize, NULL, 0); // 创建连接

    创建正常,但是在控制面板的网络设置中,点击这个新建的PPPOE,会弹出 “来自RAS的拨号错误”对话框,如果查看属性,点击OK保存后,再拨号,就正常了

    导出查看操作前后的注册表[HKEY_CURRENT_USER\Comm\RasBook\pppoe],发现操作前后Entry"=hex:\ 的值不一样了

    猜测是不是点击OK后,系统对拨号参数做了显式保存,我在程序里面创建成功,但是没有保存到注册表中?是这个原因吗,请教各位。谢谢!

    2010年10月13日 8:05

答案

  • 解决了!

    lstrcpy(lpRasEntry->szDeviceName, L"pppoe");

    这句有问题,只能是 lstrcpy(lpRasEntry->szDeviceName, L"PPPoE Line 0");

    折腾了我一天!不过,没有白忙活,比csdn论坛上一哥们,苦熬8昼夜好多了,呵呵

    • 已标记为答案 zhangpf 2010年10月13日 10:56
    2010年10月13日 10:55

全部回复

  • 补充一点,用WINCE系统自带的“宽带连接”,我用rasrename,改成pppoe这个名字,是可以用的,但是如果再调用RasSetEntryProperties,设置比如“预览用户名和密码”属性后,就又不成了,似乎是RasSetEntryProperties时,有些属性设置的不对,因为lpRasEntry被ZeroMemory了,但是不知道哪个属性是要命的啊?

    rasDial的返回值是608

    2010年10月13日 10:32
  • 解决了!

    lstrcpy(lpRasEntry->szDeviceName, L"pppoe");

    这句有问题,只能是 lstrcpy(lpRasEntry->szDeviceName, L"PPPoE Line 0");

    折腾了我一天!不过,没有白忙活,比csdn论坛上一哥们,苦熬8昼夜好多了,呵呵

    • 已标记为答案 zhangpf 2010年10月13日 10:56
    2010年10月13日 10:55
  • 你好!请问用C#如何实现创建宽带连接呢?
    2011年2月22日 2:23