![netsh hostingnetwork 问题](https://linux22.com/image/1347830/netsh%20hostingnetwork%20%E9%97%AE%E9%A2%98.png)
我尝试让 Virtual Wifi Adepter 在 Win 7 Professional 上运行。我想共享 wifi 连接(我认为它确实适用于有线连接),而且我非常确定网卡应该能够做到这一点,因为它是去年的戴尔笔记本电脑(带英特尔 wifi 适配器的戴尔 XPS 15)。到目前为止,我做了以下事情:
1)cmd.exe
以管理员身份启动
2)netsh wlan set hostednetwork mode=allow ssid=test key=testkey1
返回正反馈(允许托管网络的模式、SSID 已更改等)
3)netsh wlan show hostednetwork
返回我之前输入的内容
4)netsh wlan start hostednetwork
返回正反馈(托管网络已启动)
5)Control Panel\Network and Internet\Network and Sharing Center
你可以看到,PC 使用 wifi 适配器连接到 wifi 网络,并使用两个虚拟适配器之一连接到测试网络
6)netsh wlan show hostednetwork
返回错误(组或资源不处于此操作的正确状态)并且我的移动设备找不到建议的连接
我尝试删除/停用两个虚拟网络连接,并在设备管理器中卸载两个虚拟 wifi 适配器并重新启动。到目前为止,我只读到启动命令期间遇到的错误。
有什么办法可以解决这个问题,或者如何重新开始设置虚拟 wifi?今天早上它工作正常,除了下一步需要共享互联网。(但需要使用额外的有线连接,我会在今晚晚些时候尝试一下,然后告诉你)
干杯,丹尼尔
答案1
netsh wlan set hostednetwork mode=disallow
将停止服务并删除虚拟端口
答案2
@Daiel... 您的问题可能由多个因素导致。不要玩虚拟路由器删除游戏。您的配置可能存在错误,这可能会引发问题。按照以下步骤操作,应该没问题。
- 以管理员身份运行命令提示符(提升权限)
- 键入以下内容;netsh wlan stop hostingnetwork
- 等待一段时间,然后输入 netsh wlan start hostingnetwork
- 现在转到您当前的互联网连接并访问属性(可以是您的 LAN 或 Wi-Fi 访问)
- 从打开的属性窗口访问共享选项卡。
- 选择允许其他系统通过该连接连接到互联网的选项
- 如果您有一个下拉菜单来选择哪个网络(通常是 WIN8 和 WIN8.1 或 WIN7),那么请确保选择带有“本地连接 2*”之类的选项。 在您的情况下,数字可能会有所不同。
- 应用它并对其他所有内容选择“确定”。
现在您的连接应该已共享。您无需删除任何内容,下次想要连接时,只需在命令提示符中输入 netsh wlan start hostingnetwork
答案3
好的。共享和使用托管网络可能会带来压力。这就是我的做法。
使用命令行和 powershell 来实现所需的目标。
当然,这可以仅使用 powershell 来实现,但是嘿...可能以后再说吧。
将以下(批处理文件)文件保存为 *.bat。相应地更改其内容
您的路径\您的文件.ps1
使用上一步提供的名称保存第二个文件(PS1 文件)
“你的文件.ps1”
修改 ps1 文件的第一部分,并根据你的系统更改适配器
$wifi = "description='Broadcom 4313 802.11b/g/n'"
$ethernet = "description='Intel(R) 82577LC Gigabit Network Connection'"
您可以在 powershell 中运行以下命令
Get-WmiObject win32_networkadapterconfiguration | 选择描述
它应该只有一个连接接口,无论是物理(以太网)还是无线。
以管理员身份运行批处理文件。
此外,为了简单起见,您可以从 Windows 资源管理器上下文菜单启动该过程。
为此,请使用第三个文件并将其保存为 reg 并运行它,或者从示例中手动更改。
不用说,有必要更改它读取的位置
您的路径\BATCHFILE.bat
尽情享受吧。干杯
-------------------------------------------- 批处理文件
@echo off
echo Current Settings (netsh wlan show hostednetwork):
netsh wlan show hostednetwork | findstr -i status
rem echo Current Settings
rem echo ######################
rem echo .
echo SSID Name
netsh wlan show hostednetwork | findstr -i " ssid "
netsh wlan show hostednetwork setting=security
echo ######################
echo # #
echo # Please select #
echo # #
echo # [E] Edit #
echo # [S] Start #
echo # [Q] Stop #
echo # [V] View #
echo # #
echo ######################
choice /C ESQV
IF errorlevel 4 goto TetherView
IF errorlevel 3 goto TetherStop
IF errorlevel 2 goto TetherStart
IF errorlevel 1 goto TetherEdit
rem GOTO TetherEnd
:TetherEdit
echo "Please enter SSID:"
set /p SSID=
echo "SSID Password"
set /p PassWord=
echo %SSID% %PassWord%
netsh wlan set hostednetwork mode=allow ssid=%SSID% key=%PassWord%
netsh wlan start hostednetwork
GOTO TetherEnd
:TetherStart
netsh wlan start hostednetwork
powershell -file YOURPATH\ICS-Control.ps1 enable
GOTO TetherEnd
:TetherStop
netsh wlan stop hostednetwork
powershell -file YOURPATH\ICS-Control.ps1 disable
GOTO TetherEnd
:TetherView
cls
netsh wlan show hostednetwork | findstr -i status
echo SSID Name
netsh wlan show hostednetwork | findstr -i " ssid "
netsh wlan show hostednetwork setting=security
echo Connected clients
arp -a | findstr -i 192.168.173 | findstr /V 255 | findstr /V 192.168.173.1
GOTO TetherEnd
:TetherEnd
@PAUSE
--------------------------------------------PS1 文件
#Change accordingly
$wifi = "description='Broadcom 4313 802.11b/g/n'"
$ethernet = "description='Intel(R) 82577LC Gigabit Network Connection'"
#Doesnt change so no need to alter. Detects what interface is connected (should be only one)
$netAdapter = get-wmiobject win32_networkadapter -filter "netconnectionstatus = 2" | select netconnectionid, name, InterfaceIndex, netconnectionstatus
if ($netAdapter.netconnectionid -cmatch "Wi-Fi"){$publicAdapter = $wifi} else {$publicAdapter = $ethernet}
$privateAdapter = "description='Microsoft Hosted Network Virtual Adapter'"
Function Var1ICSenable
{
$virtualAdapter = Get-WMIObject win32_networkadapterconfiguration | where {$_.ServiceName -eq "vwifimp"} | % {$_.GetRelated('win32_networkadapter')} | Select -ExpandProperty Name
$vars1 = $privateAdapter
$Adapter0 = Get-WmiObject Win32_NetworkAdapterConfiguration -Filter $vars1 | select description
$mAdapter3 = $Adapter0 -replace "@{description=",""
$mAdapter3 = $mAdapter3 -replace "}",""
$mAdapter4 = "description='$mAdapter3'"
$mAdapter5 = gwmi win32_networkadapter -Filter $mAdapter4 |select netconnectionid
$mAdapter5 = $mAdapter5 -replace "@{netconnectionid=",""
$global:mAdapter5 = $mAdapter5 -replace "}",""
}
Function Var2ICSenable
{
$vars2 = $publicAdapter
$Adapter1 = Get-WmiObject Win32_NetworkAdapterConfiguration -Filter $vars2 | select description
$mAdapter = $Adapter1 -replace "@{description=",""
$mAdapter = $mAdapter -replace "}",""
$mAdapter1 = "description='$mAdapter'"
$mAdapter2 = gwmi win32_networkadapter -Filter $mAdapter1 |select netconnectionid
$mAdapter2 = $mAdapter2 -replace "@{netconnectionid=",""
$global:mAdapter2 = $mAdapter2 -replace "}",""
}
function EnableDisableICS
{
$bFound = $FALSE
$oNetSharingManager = new-object -comobject HNetCfg.HNetShare
if ($oNetSharingManager -eq $null)
{
write-host "Unable to get the HNetCfg.HnetShare object."
Exit
}
if ($oNetSharingManager.SharingInstalled -eq $null)
{
write-host "Sharing is not available on this platform."
Exit
}
$oConnectionCollection = $oNetSharingManager.EnumEveryConnection
foreach ($oItem In $oConnectionCollection)
{
$EveryConnection = $oNetSharingManager.INetSharingConfigurationForINetConnection($oItem)
$objNCProps = $oNetSharingManager.NetConnectionProps($oItem)
If ($objNCProps.name -eq $sPrivateConnectionName)
{
$bFound = $True
write-host "Setting ICS Private to " $bEnable " on connection: " $objNCProps.name
If ($bEnable -eq "true")
{
$EveryConnection.EnableSharing(1)
}
Else
{
$EveryConnection.DisableSharing()
}
}
}
$oConnectionCollection = $oNetSharingManager.EnumEveryConnection
foreach ($oItem In $oConnectionCollection)
{
$EveryConnection = $oNetSharingManager.INetSharingConfigurationForINetConnection($oItem)
$objNCProps = $oNetSharingManager.NetConnectionProps($oItem)
If ($objNCProps.name -eq $sPublicConnectionName)
{
$bFound = $True
write-host "Setting ICS Public to " $bEnable " on connection: " $objNCProps.name
If ($bEnable -eq "true")
{
$EveryConnection.EnableSharing(0)
}
Else
{
$EveryConnection.DisableSharing()
}
}
}
If ($bFound -eq $null)
{
write-host "Unable to find the connection " + $sPublicConnectionName
}
}
Function EnableSharing
{
#regsvr32 /s hnetcfg.dll
# Variables to enable and disable ICS
Var1ICSenable
Var2ICSenable
$global:firstICSvar = $global:mAdapter2
$global:secondICSvar = $global:mAdapter5
$benable = "true"
$sPublicConnectionName = $global:firstICSvar
$sPrivateConnectionName = $global:secondICSvar
$mstr = $sPublicConnectionName + " " + $sPrivateConnectionName + " " + $bEnable
EnableDisableICS $mstr
}
Function DisableSharing
{
#regsvr32 /s hnetcfg.dll
# Variables to enable and disable ICS
Var1ICSenable
Var2ICSenable
$global:firstICSvar = $global:mAdapter2
$global:secondICSvar = $global:mAdapter5
$benable = "false"
$sPublicConnectionName = $global:firstICSvar
$sPrivateConnectionName = $global:secondICSvar
$mstr = $sPublicConnectionName + " " + $sPrivateConnectionName + " " + $bEnable
EnableDisableICS $mstr
#write-host "TESTE" $mstr
}
if ($args[0] -eq "enable"){EnableSharing}else{DisableSharing}
--------------------------------------------注册文件
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\runas]
@="Tether (Hosted Network)"
"HasLUAShield"=""
[HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\runas\command]
@="cmd.exe /c YOURPATH\BATCHFILE.bat"
答案4
<strike>我不知道您是否已经这样做了,但您需要共享您的基本 WiFi 连接。为此,请转到网络中心(或英文版 Win 中的名称),然后在您连接到互联网的网络适配器上单击鼠标右键。然后是设置,然后是共享选项卡。选择 wifi-host(我认为这是标准名称),然后执行 netsh wlan set....然后 netsh wlan start hosting network。这就是我一直这样做的方式。
我也遇到过此组不允许访问的问题,我想我已经解决了这个问题,因为我的 ip-v4 连接存在一些问题,但我不再确定了。也可能是我的网桥出了问题,我不知道(如果我记得,我会告诉你的!)。</strike>
编辑:我找到了!几秒钟前它还不能工作,现在它可以了。转到设备管理器,在顶部您将看到视图,然后选择显示隐藏的设备。然后转到网络选项卡,应该有一个带有向下箭头的灰色圆圈:。右键单击,然后单击启用/启动/打开(对我来说它被称为“inschakelen”:),然后它就可以正常工作了!