加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

.net – 以编程方式从VBS(或C#/ VB)安装Microsoft环回适配器

发布时间:2020-12-16 01:40:28 所属栏目:百科 来源:网络整理
导读:我想以编程方式安装MS环回适配器以自动化 tunneling of SMB over SSH. 我在网上找到的所有代码都使用MS devcon实用程序,该实用程序不可再发行(参见http://support.microsoft.com/kb/311272/en-us).示例用法(更多示例): devcon -r install %WINDIR%InfNetl
我想以编程方式安装MS环回适配器以自动化 tunneling of SMB over SSH.

我在网上找到的所有代码都使用MS devcon实用程序,该实用程序不可再发行(参见http://support.microsoft.com/kb/311272/en-us).示例用法(更多示例):

devcon -r install %WINDIR%InfNetloop.inf *MSLOOP

除了可分发性问题之外,理想情况下我希望能够控制所得到的设备名称,尽管可以通过枚举前后网络适配器并寻找新的MS环回设备来解决这个问题.这有点活泼,虽然我觉得我可以忍受它.我的想法是适应this code的一些.

我正在查看WDK的devcon源代码,通过SetupAPI / CfgMgr32添加环回适配器,因为上面链接的MS KB文章建议.有没有更容易/可编写脚本的方式?

如果没有,那么有没有人为SetupAPI / CfgMgr32路由提供一些相对简单的示例代码?

解决方法

我想在不编写任何新exe的情况下实现同样的目的,并且发现可以使用cscript和devcon和netsh工具完成.创建适配器似乎无法控制它将被调用的内容,因此您必须在创建它之后使用WMI接口进行枚举.不幸的是,netsh的行为取决于你所使用的Windows版本,但是在名为create-loopback.vbs的文件中打包以下内容,它将在XP和2008服务器上运行.

Dim strLastLoopbackAdapterName,loopbackAdapterName 

  If wscript.arguments.count < 3 then
    WScript.Echo "usage: create-loopback.vbs loopbackAdapterName loopbackIpAddress loopbackSubNetMask "
    WScript.Quit
  end If
  loopbackAdapterName = wscript.arguments(0)
  loopbackIpAddress = wscript.arguments(1)
  loopbackSubNetMask = wscript.arguments(2)

  Wscript.Echo "Creating loopback called " &loopbackAdapterName &" on " &loopbackIpAddress &" with mask " &loopbackSubNetMask

  Set objShell = CreateObject("WScript.Shell") 
  Wscript.Echo "Installing loopback adapter..."

  objShell.Run "cmd /c devcon install %windir%infnetloop.inf *MSLOOP",True 

  Wscript.Echo "Waiting for drivers to update..."
  Wscript.sleep 10000 'Allow 10s for install' 

  strComputer = "."
  Set objWMIService = GetObject("winmgmts:" & strComputer & "rootCIMV2")
  Set colItems = objWMIService.ExecQuery("SELECT NetConnectionID FROM Win32_NetworkAdapter WHERE Name='Microsoft Loopback Adapter'","WQL",48)
  For Each objItem In colItems
     strLastLoopbackAdapterName = objItem.NetConnectionID
  Next

  Wscript.Echo "Last Loopback Connection is " & strLastLoopbackAdapterName  

  Wscript.Echo "Renaming new loopback..."
  objShell.Run "netsh interface set interface name = " &Chr(34) &strLastLoopbackAdapterName &Chr(34) &" newname = " &Chr(34) &loopbackAdapterName &Chr(34),True 
  Wscript.Echo "Configuring loopback..."
  objShell.run "netsh interface ip set address name=" &Chr(34) &loopbackAdapterName &Chr(34) &" source=static " &loopbackIpAddress &" " &loopbackSubNetMask,True 
  Wscript.Echo "Done"
  WScript.Quit(0)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读