Script en VBS

Iniciado por Lacayo, 11 Julio 2018, 16:44 PM

0 Miembros y 1 Visitante están viendo este tema.

Lacayo

Hola a todos.

Solicito vuestra ayuda ya que no dispongo de conocimientos de programación.

Necesitaría crear un script en VBS que me permitiera habilitar o deshabilitar la WIFI en un equipo. Debería ser para WINDOWS.

El problema es que se me deshabilita la WIFI sin motivo y no dispongo de permisos de administrador para activar de nuevo el dispositivo.

Lo he conseguido hacer en un BAT con el comando:

netsh interface set interface "Wi-Fi" enabled

pero requiere elevación.

VBS me debe permitir hacer lo mismo pero sin pedirme credenciales de administrador.

La duda: no se si es mejor hacerlo modificando claves de registro (no sé cuales) o a través de:

WshShell.Run ("cmd /c netsh interface set interface "Wi-Fi" enabled")

esta orden no me funciona en el script.

Gracias de antemano


engel lex

CitarVBS me debe permitir hacer lo mismo pero sin pedirme credenciales de administrador.

por qué asumes eso? las credenciales de administrador es para acceso de diferentes "zonas" del sistema, todo lo que requiera ir a ellas te lo pedirá



CitarLo he conseguido hacer en un BAT con el comando:

netsh interface set interface "Wi-Fi" enabled

pero requiere elevación

CitarLa duda: no se si es mejor hacerlo modificando claves de registro (no sé cuales) o a través de:

WshShell.Run ("cmd /c netsh interface set interface "Wi-Fi" enabled")

ambas opciones descritas requieren elevación, el VBS no esquiva ningún permiso
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

Lacayo

Gracias por responder

Citarpor qué asumes eso? las credenciales de administrador es para acceso de diferentes "zonas" del sistema, todo lo que requiera ir a ellas te lo pedirá

En un equipo donde no estaba habilitado la modificación del registro y era necesario cerrar sesión y dar permisos de administrador local al usuario para modificar una clave en HKCU, un script modificaba esa clave sin tener que elevar los permisos del usuario.

Entiendo que si adapto ese script puedo hacer lo que necesito.

Lacayo

Buenas,

He progresado, pero poco.

localicé este batch que parece que servía:

CitarREM .bat con permisos de administrador
:-------------------------------------
REM  --> Analizando los permisos
    IF "%PROCESSOR_ARCHITECTURE%" EQU "amd64" (
>nul 2>&1 "%SYSTEMROOT%\SysWOW64\cacls.exe" "%SYSTEMROOT%\SysWOW64\config\system"
) ELSE (
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
)

REM --> Si hay error es que no hay permisos de administrador.
if '%errorlevel%' NEQ '0' (
    echo Solicitando permisos de administrador... Requesting administrative privileges... Anfordern Administratorrechte ...
    goto UACPrompt
) else ( goto gotAdmin )

:UACPrompt
    echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
    set params = %*:"=""
    echo UAC.ShellExecute "cmd.exe", "/c ""%~s0"" %params%", "", "runas", 1 >> "%temp%\getadmin.vbs"

    "%temp%\getadmin.vbs"
    del "%temp%\getadmin.vbs"
    exit /B

:gotAdmin
    pushd "%CD%"
    CD /D "%~dp0"
:-------------------------------------- 

REM   INCLUYE AQUÍ TU CÓDIGO DEL FICHERO
::/Programa a Ejecutar
netsh interface set interface "WI-FI" enabled
pause
EXIT

Al final, y después de tanto código, creo que lo que hace es lo mismo que un runas /user:administrador. Es decir, para este viaje no hacían falta alforjas.
Eso sí, en un equipo que ya tiene permisos de administrador, no me pide elevación a la hora de ejecutar el script y me activa la WIFI.
En un equipo que no los tiene, me pide usuario y pass. La duda es si me lo pedirá en un equipo que tenga la UAC deshabilitada.

Imagino que la elevación a administrador se realiza aqui:

Citargoto UACPrompt
) else ( goto gotAdmin )

:UACPrompt
    echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
    set params = %*:"=""
    echo UAC.ShellExecute "cmd.exe", "/c ""%~s0"" %params%", "", "runas", 1 >> "%temp%\getadmin.vbs"

pero no tengo ni idea de para qué crea el script getadmin.vbs y si realmente sirve de algo.

Por otro lado he probado este otro script:

CitarRem Definiciones
Dim objShell, RegLocate, RegLocate1
Const EWX_LOGOFF = 0
Rem Librerias
Set objShell = WScript.CreateObject("WScript.Shell")
Set objShell = CreateObject("Wscript.Shell")
On Error Resume Next
Rem Cambia el valor del DWORD (Clave del registro)
RegLocate = "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\{XXXXXXXXXXXXXXXXXXXXXXXX}\RegistrationEnabled"
objShell.RegWrite RegLocate,"0","REG_DWORD"
Rem Advierte del deslogeo
intReturn = objShell.Popup("Se va a cerrar la sesion para guardar los cambios, presione aceptar", _
20, "Auto LogOff", wshYesNoDialog + wshQuestionMark)
If intReturn = wshYes Then
For Each objPC In GetObject("winmgmts:{(shutdown)}").ExecQuery("Select * from Win32_OperatingSystem")
objPC.Win32Shutdown LOGOFF + FORCE
Next
ElseIf intReturn = wshNo Then
wscript.Quit
Else
Rem Si no responde se forza el deslogeo
For Each objPC In GetObject("winmgmts:{(shutdown)}").ExecQuery("Select * from Win32_OperatingSystem")
objPC.Win32Shutdown LOGOFF + FORCE
Next
End If
WScript.Quit (0) ' Detiene el Script y sale.

Este es peor. También requiere de elevación pero además no debe ser la clave de registro correcta ya que ni reiniciando ni cerrando sesión consigo activar o desactivar la WIFI.
Este segundo script hacía su trabajo perfectamente en un Windows XP. Es decir, no llegaba a pedir en ningún momento credenciales de administrador.

No sé si con esta nueva información me podréis ayudar

Saludos