netsh hostingnetwork 问题

netsh hostingnetwork 问题

我尝试让 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”:),然后它就可以正常工作了!

相关内容