我想以编程方式安装 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/