web-dev-qa-db-ja.com

Windowsで管理者なしでWLANを有効/無効にする

バッチスクリプトを使用してWLAN接続を有効/無効にしたいのですが。問題は、管理者権限を必要としないことです。

GUIを使用してこれを変更できます。

GUI without admin

しかし、私はcmdで正確なことをする方法を見つけられませんでした。私は、管理者権限を必要とするネットワークアダプターなどを有効または無効にする方法のみを見つけました。

助けてくれてありがとう。

2
dan1st

現在、最善の解決策は次のとおりです(@somebadhatからのコメントを参照)。

このWebサイト のWindows 7バージョンは、.vbsスクリプトがネットワークアダプターを有効/無効にすることを示しています。残念ながら、最後に管理者権限が必要であり、UACプロンプトがあります。より良い解決策がある場合は、これでこのコミュニティwikiを編集してください。

にはドイツのPCがあるため、En&able&Aktivierenに、Disa&ble&Deaktivierenに変更する必要がありました。元に戻すことができます。

また、アダプター名をWLANに変更しました。

私の採用したスクリプト:

'~ Toggle a SPECIFIED NIC on or off
Option Explicit

Const NETWORK_CONNECTIONS = &H31&

Dim objShell, objFolder, objFolderItem, objEnable, objDisable, wshShell
Dim folder_Object, target_NIC
Dim NIC, clsVerb
Dim str_NIC_Name, strEnable, strDisable
Dim bEnabled, bDisabled

' ========================================================
' ===== place the name of your network adapter here ======
' examples:
' str_NIC_Name = "Local Area Connection 2"
' str_NIC_Name = "Wireless Connection 1"
' ========================================================
str_NIC_Name = "WLAN"
' ========================================================

strEnable = "&Aktivieren"
strDisable = "&Deaktivieren"

' create objects and get items
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace(NETWORK_CONNECTIONS)
Set objFolderItem = objFolder.Self
Set folder_Object = objFolderItem.GetFolder

' see if the namespace exists
If folder_Object Is Nothing Then
    Wscript.Echo "Could not find Network Connections"
    WScript.Quit
End If

Set target_NIC = Nothing

' look at each NIC and match to the chosen name
For Each NIC In folder_Object.Items
    If LCase(NIC.Name) = LCase(str_NIC_Name) Then
        ' proper NIC is found, get it
        Set target_NIC = NIC
    End If
Next

If target_NIC Is Nothing Then
    WScript.Echo "Unable to locate proper NIC"
    WScript.Quit
End If

bEnabled = True
Set objEnable = Nothing
Set objDisable = Nothing

For Each clsVerb In target_NIC.Verbs
    '~ Wscript.Echo clsVerb
    If clsVerb.Name = strEnable Then
        Set objEnable = clsVerb
        bEnabled = False
        '~ WScript.Echo "enable"
    End If
    If clsVerb.Name = strDisable Then
        Set objDisable = clsVerb
        '~ WScript.Echo "disable"
    End If
Next

Set wshShell = CreateObject( "WScript.Shell" )

If bEnabled Then
    WScript.Echo "disable"
    objDisable.DoIt
Else
    WScript.Echo "enable"

    objEnable.DoIt
End If
wshShell.Run "ms-settings:network-proxy"
'~ Give the connection time to stop/start, Prompt after UAC Prompt
WScript.Sleep 1000
WScript.Echo "end"
WScript.Quit
0
dan1st