Título: Script en VBS Publicado por: Lacayo en 11 Julio 2018, 16:44 pm 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 Título: Re: Script en VBS Publicado por: engel lex en 11 Julio 2018, 17:10 pm Citar VBS 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á Citar Lo he conseguido hacer en un BAT con el comando: netsh interface set interface "Wi-Fi" enabled pero requiere elevación Citar 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") ambas opciones descritas requieren elevación, el VBS no esquiva ningún permiso Título: Re: Script en VBS Publicado por: Lacayo en 11 Julio 2018, 22:21 pm Gracias por responder
Citar 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á 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. Título: Re: Script en VBS Publicado por: Lacayo en 13 Julio 2018, 23:39 pm Buenas,
He progresado, pero poco. localicé este batch que parece que servía: Citar REM .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: Citar 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" 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: Citar Rem 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 |