enable Win10 inbuild hotspot by cmd/batch/powershell

前端 未结 7 1943
渐次进展
渐次进展 2020-12-31 10:59

as the title says I search for a way to enable/disable the Hotspot inbuild in Win10 via the command prompt/powershell/a batch file. In the GUI it can be easily done with the

相关标签:
7条回答
  • 2020-12-31 11:08

    Based on the PowerShell comment above,

    Here are the WinRT code components for mix/match to accomplish the above tasks for WiFi Direct 2.0 HotSpot activities using C++ without dependencies on other tooling etc (they work on IoT Core, etc):

    • Programmatically set the SSID and/or PassPhrase
    • Programmatically query the current WiFi Direct 2.0 HotSpot status
    • Programmatically turn on/off the WiFi Direct 2.0 HotSpot
    #include <winrt/Windows.Networking.Connectivity.h>
    #include <winrt/Windows.Networking.NetworkOperators.h>
    namespace winrt { // /ZW embed in :<winrt> when `Windows` is ambiguously defined
      static void af_winrt_wifi_hotspot_test() {
        // start ms-settings:network-mobilehotspot
        init_apartment(); // apartment_type::multi_threaded
        auto connectionProfile { Windows::Networking::Connectivity::NetworkInformation::GetInternetConnectionProfile() };
        auto tetheringManager = Windows::Networking::NetworkOperators::NetworkOperatorTetheringManager::CreateFromConnectionProfile(connectionProfile);
        switch(tetheringManager.TetheringOperationalState()) {
          case Windows::Networking::NetworkOperators::TetheringOperationalState::Off: {
              auto ioAsync = tetheringManager.StartTetheringAsync();
              auto fResult = ioAsync.get();
            }
            break;
          case Windows::Networking::NetworkOperators::TetheringOperationalState::On: {
              auto ioAsync = tetheringManager.StopTetheringAsync();
              auto fResult = ioAsync.get();
            }
            break;
          case Windows::Networking::NetworkOperators::TetheringOperationalState::InTransition:
          default:
            break;
        }
        clear_factory_cache();
        uninit_apartment();
      }
    }
    
    0 讨论(0)
  • 2020-12-31 11:20

    I can confirm @smallscript's winRT solution works. Running the script will either open/close hotspot connection depends on the current status (enabled to disabled and vice versa).

    To complete his answer I will point out two additional things in order to compile the code:

    • You must have Windows SDK installed(I used version 10.0.18362.0) to have the winRT library.
    • You need to link the RuntimeObject.lib library to your project, otherwise you'll get unresolved external symbols (Using VS, Add the name to: Project -> Properties -> Linker -> Input -> Additional Dependencies)
    0 讨论(0)
  • 2020-12-31 11:22

    By Using CMD. It is too Simple to turn PC as Hotspot. But you PC must have Hosted network supported, to check it out try this command

        @echo off
    REM    Copyright (C) 2013  
    REM    user49828
    REM
    REM    Batch file for creating Wifi Hotspot
    if _%1_==_payload_  goto :payload
    
    :getadmin
        echo %~nx0: elevating self
        set vbs=%temp%\getadmin.vbs
        echo Set UAC = CreateObject^("Shell.Application"^)                >> "%vbs%"
        echo UAC.ShellExecute "%~s0", "payload %~sdp0 %*", "", "runas", 1 >> "%vbs%"
        "%temp%\getadmin.vbs"
        del "%temp%\getadmin.vbs"
    goto :eof
    
    :payload
        echo %~nx0: running payload with parameters:
        echo %*
        echo ---------------------------------------------------
        cd /d %2
        shift
        shift
        rem put your code here
        rem e.g.: perl myscript.pl %1 %2 %3 %4 %5 %6 %7 %8 %9
        :start
    @ECHO off
    ECHO  Pleae select one of the options Programmed By Overflown.com  "user49828"
    ECHO  --------------------------------------------------------------------------------------------------------------------------
    ECHO  1 Hotspot settings
    ECHO  2 Start Hotspot
    ECHO  3 Stop  Hotspot
    ECHO  --------------------------------------------------------------------------------------------------------------------------
    
    SET /p option=Please enter one of the options:
    
    if %option%==1  ( goto setup )      else set /a er=1
    if %option%==2  ( goto start1 )      else set /a er=er+1
    if %option%==3  ( goto stop )       else set /a er=er+1
    
    :noOption
    if %er% GEQ 3 ( 
    Echo Error!
    Echo Please enter a correct option
    @pause
    cls  
    goto start
    )
    
    :setup
    SET /p ssid=Please enter the Hotspot name:
    SET /p key=Please enter the Hotspot password greater the 8 digits:
    netsh wlan set hostednetwork mode=allow ssid=%ssid% key=%key% 
    if %errorlevel%==0 (
    ECHO Setup complete
    )
    @pause
    cls  
    goto start
    
    :start1
    netsh wlan start hostednetwork
    @pause
    cls  
    goto start
    
    :stop
    netsh wlan stop hostednetwork
    @pause
    cls  
    goto start
    goto :eof
    
    0 讨论(0)
  • 2020-12-31 11:23

    I think the only solution at the moment is to setup an autohotkey script to click the button on start up. Windows +A, Shift Tab, down arrow, etc... I need this for a headless PC to allow wifi remote desktop.

    0 讨论(0)
  • 2020-12-31 11:27

    The Windows 10 mobile hotspot gets started by the Windows Mobile Hotspot Service (icssvc). Using Powershell:

    Get the current state of the service:

    get-service "icssvc"
    

    Start the service:

    start-service "icssvc"
    

    Stop the service:

    stop-service "icssvc"
    

    If you want to configure the hotspot then thats another thing. You can Google "Configure Internet Connection Sharing with PowerShell" to get you started.

    0 讨论(0)
  • 2020-12-31 11:28

    The Hosted Network (which can be configured using the netsh wlan set hostednetwork ... command) and the "new" Mobile Hotspot use different technologies under the hood.

    There's a WinRT API to control and configure the "new" mobile hotspot you're referring to. You can call it from PowerShell:

    The following code snippet requires Ben N.'s await function for IAsyncOperation and IAsyncAction in PowerShell, which can be found here.

    $connectionProfile = [Windows.Networking.Connectivity.NetworkInformation,Windows.Networking.Connectivity,ContentType=WindowsRuntime]::GetInternetConnectionProfile()
    $tetheringManager = [Windows.Networking.NetworkOperators.NetworkOperatorTetheringManager,Windows.Networking.NetworkOperators,ContentType=WindowsRuntime]::CreateFromConnectionProfile($connectionProfile)
    
    # Be sure to include Ben N.'s await for IAsyncOperation:
    # https://superuser.com/questions/1341997/using-a-uwp-api-namespace-in-powershell
    
    # Check whether Mobile Hotspot is enabled
    $tetheringManager.TetheringOperationalState
    
    # Start Mobile Hotspot
    Await ($tetheringManager.StartTetheringAsync()) ([Windows.Networking.NetworkOperators.NetworkOperatorTetheringOperationResult])
    
    # Stop Mobile Hotspot
    Await ($tetheringManager.StopTetheringAsync()) ([Windows.Networking.NetworkOperators.NetworkOperatorTetheringOperationResult])
    

    The NetworkOperatorTetheringManager class also allows you to set the SSID and the passphrase of your hotspot programmatically.

    0 讨论(0)
提交回复
热议问题