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

标签 .net vbscript loopback

我想以编程方式安装 MS 环回适配器以自动化 tunneling of SMB over SSH .

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

devcon -r install %WINDIR%\Inf\Netloop.inf *MSLOOP

除了可分配性问题之外,理想情况下,我希望对生成的设备名称进行一些控制,尽管这可以通过枚举之前和之后的网络适配器并寻找新的 MS 环回设备来解决。这有点过分,虽然我想我可以忍受它。我的想法是改编一些 this code .

我目前正在研究 WDK 的 devcon 源代码,以通过 SetupAPI/CfgMgr32 添加环回适配器,正如上面链接的 MS KB 文章所建议的那样。有没有更简单/可编写脚本的方法?

如果没有,是否有人有一些相对简单的 SetupAPI/CfgMgr32 路由示例代码?

最佳答案

我想在不编写任何新 exe 的情况下实现相同的目标,并发现它可以使用 cscript 以及 devcon 和 netsh 工具来完成。创建适配器似乎让您无法控制它将被调用的内容,因此您必须在创建它之后使用 WMI 接口(interface)进行枚举。不幸的是,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%\inf\netloop.inf *MSLOOP", 0, True 

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

  strComputer = "."
  Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
  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), 0, True 
  Wscript.Echo "Configuring loopback..."
  objShell.run "netsh interface ip set address name=" &Chr(34) &loopbackAdapterName &Chr(34) &" source=static " &loopbackIpAddress &" " &loopbackSubNetMask, 0, True 
  Wscript.Echo "Done"
  WScript.Quit(0)

关于.net - 从 VBS(或 C#/VB)以编程方式安装 Microsoft 环回适配器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4711425/

相关文章:

c# - WPF 中的模糊背景

javascript - 将事件目录查询从 VBS 转换为 Javascript 以用于全局目录

mysql - Loopback - 从 MongoDB 性能查询相关模型

java - 使用环回进行测试环境

.net - .Net在两个不同的程序集中的相同类型

c# - 添加 dll 引用

.net - 如何使用 .NET 打开文件以进行非独占写入访问

windows - WMI Win32_PerfRawData_PerfOS_PagingFile PercentUsage 图中的可疑值

windows - 从 VBScript 中的函数返回引用

c++ - 修改系统卷后如何修改WASAPI回送捕获卷?