Skip Ribbon Commands
Skip to main content

Ondrej Sevecek's Blog

:

Engineering and troubleshooting by Directory Master!
Ondrej Sevecek's Blog > Posts > WiFi hotspot na Windows
září 05
WiFi hotspot na Windows

Potřeboval jsem si udělat z Windows WiFi hotspot pro mobil. Prostě když mám připojen notebook do rychlého Ethernetu a není k tomu WiFi připojení, tak je škoda to nevyužít i na mobilu. Prostě na mobilech to normálně jde jednoduše (na mém iPhone se to jmenuje personal hotspot). Jenže jak jsem nezjistil, že by to šlo moc jednoduše na Windows. Popravdě nechápu.

Takže jsem gůgloval a zde je výsledek. Musíte si nastavit a povolit tzv. hosted network pomocí NETSH. A potom zapnout Internet Connection Sharing (ICS) na té skutečné síťovce, která je opravdu připojena do internetu. A ještě udělat díru do firewallu pro DHCP a DNS. To je hodně kroků, které se mi nechtějí dělat opakovaně. Tak jsem si na to udělal PowerShell skript:

$physicalIF = 'LAN'
$hotspotSSID = 'ondass'
$hotspotPwd = 'ondrovoUltraHeslo77'


netsh wlan set hostednetwork mode=allow ssid=$hotspotSSID key=$hotspotPwd
netsh wlan start hostednetwork


Set-Service -ServiceName SharedAccess -StartupType Disabled
Start-Service SharedAccess


regsvr32 /s hnetcfg.dll

$ics = New-Object -ComObject HNetCfg.HNetShare
$allNics = $ics.EnumEveryConnection | % { $ics.NetConnectionProps.Invoke($_) }

$publicNicCfg = $allNics | ? { $_.Name -eq $physicalIF }
echo ($publicNicCfg | Out-String)

$privateNicCfg = $allNics | ? { $_.DeviceName -eq 'Microsoft Hosted Network Virtual Adapter' }
echo ($privateNicCfg | Out-String)

$ics.EnumEveryConnection | % { $ics.INetSharingConfigurationForINetConnection.Invoke($publicNic).DisableSharing() }

$publicNic = $ics.EnumEveryConnection | % { if ($ics.NetConnectionProps.Invoke($_).Name -eq $physicalIF) { $_ } }
$publicNicICS = $ics.INetSharingConfigurationForINetConnection.Invoke($publicNic)
echo ($publicNicICS | Out-String)
$publicNicICS.EnableSharing(0)

$privateNic = $ics.EnumEveryConnection | % { if ($ics.NetConnectionProps.Invoke($_).DeviceName -eq 'Microsoft Hosted Network Virtual Adapter') { $_ } }
$privateNicICS = $ics.INetSharingConfigurationForINetConnection.Invoke($privateNic)
echo ($privateNicICS | Out-String)
$privateNicICS.EnableSharing(1)


netsh advfirewall firewall add rule name="HotSpot DHCP In" dir=in localport=67 protocol=udp profile=private action=allow
netsh advfirewall firewall add rule name="HotSpot DNS In" dir=in localport=53 protocol=udp profile=private action=allow

Comments

hmm GUI are dead

bavili jsme se o tom vcera

slo by to udelat jednim dialogem v Gui, nebo 60 radkovym scriptem v powershell

v GUI to neni
Petr on 5.9.2014 8:23

hmm GUI are dead

bavili jsme se o tom vcera

slo by to udelat jednim dialogem v Gui, nebo 60 radkovym scriptem v powershell

v GUI to neni
Petr on 5.9.2014 10:00

GUI + C#

VasekB on 5.9.2014 10:36

Eq vs Like

Neviem, ci len u mna, ale moj "Microsoft Hosted Network Virtual Adapter" sa vola "Microsoft Hosted Network Virtual Adapter #2", takze je mozno praktickejsie nahradit riadok

$privateNicCfg = $allNics | ? { $_.DeviceName -eq 'Microsoft Hosted Network Virtual Adapter' }

za

$privateNicCfg = $allNics | ? { $_.DeviceName -like 'Microsoft Hosted Network Virtual Adapter*' }
Dawid on 25.10.2014 14:36

Eq vs Like

Neviem, ci len u mna, ale moj "Microsoft Hosted Network Virtual Adapter" sa vola "Microsoft Hosted Network Virtual Adapter #2", takze je mozno praktickejsie nahradit riadok

$privateNicCfg = $allNics | ? { $_.DeviceName -eq 'Microsoft Hosted Network Virtual Adapter' }

za

$privateNicCfg = $allNics | ? { $_.DeviceName -like 'Microsoft Hosted Network Virtual Adapter*' }
Dawid on 25.10.2014 14:47

Dotaz

podle toho tveho se mi sice hostovana sit spustí ale vyhodí mi to spoustu vyjímek okolo 'Invoke', chtěl bych se zeptat k čemu vůbec slouží, jsem novej v skriptování začal jsem tenhle semestr na škole až.
Ale podle tohodle týpka mi to funguje http://www.rivnet.ro/2013/07/create-your-own-wifi-hotspot-windows-7-windows-8.html ;)
Swabinsky on 18.11.2014 14:29

Re: WiFi hotspot na Windows

no Invoke je COM volání funkce. On PowerShell neumí ty COM obalit, takže je to potom potřeba volat takhle přes to obecné COM rozhraní
ondass on 18.11.2014 16:10

Add Comment

Title


Pole Title nemusíte vyplňovat, doplní se to samo na stejnou hodnotu jako je nadpis článku.

Author *


Pole Author nesmí být stejné jako pole Title! Mám to tu jako ochranu proti spamu. Roboti to nevyplní dobře :-)

Body *


Type number two as digit *


Semhle vyplňte číslici dvě. Předchozí antispemové pole nefunguje úplně dokonale, zdá se, že jsou i spamery, které pochopily, že je občas potřeba vyplnit autora :-)

Email


Emailová adresa, pokud na ni chcete ode mě dostat odpověď. Nikdo jiný než já vaši emailovou adresu neuvidí.

Attachments