使用RasDial建立VPN连接后,保持网络位置向导不会弹出?

时间:2012-05-29 14:46:27

标签: c++ c winapi windows-7 vpn

我正在使用

建立与VPN的连接
  • RasSetEntryProperties创建新的电话簿条目
  • RasSetCredentials向该电话簿条目添加凭据
  • RasGetEntryDialParams获取RasDial的参数,
  • RasDial最终建立新连接。

经过一番麻烦后,它现在就像一个魅力。唯一的缺点是,每次我连接到VPN时都会出现讨厌的网络位置向导(至少在Windows 7上),如上所述。如何以编程方式防止这种情况发生?

2 个答案:

答案 0 :(得分:0)

我有一个非最佳解决方案。窗口仍会弹出一瞬间,但几乎会立即关闭。使用以下AutoIt脚本:

WinWaitActive("Network Location Wizard")
WinClose ("Network Location Wizard")

AutoIt脚本可以很容易地编译成可执行文件,然后可以在C / C ++代码之后添加以下行:

system("start Your_Autoit_script.exe");

这将在您的代码之后立即启动脚本,然后脚本将等待网络位置向导弹出(WinWaitActive),然后它将关闭它。

使用此方法有两个副作用:

  1. 窗口仍会显示很短的时间。
  2. 托盘图标会在很短的时间内出现。
  3. 您的用户无需安装AutoIt,生成的可执行文件是独立的。

    编辑:另见this solution

答案 1 :(得分:0)

如果从会话0调用这些功能(即以系统用户身份运行的Windows服务),则无法获得弹出窗口。这是因为会话0隔离。

如果您有足够的权限将代码作为服务运行,那么这将解决您的问题,如果不是,我不认为API中有任何内容可以帮助您。