Foro de elhacker.net

Programación => Java => Mensaje iniciado por: tamesfern en 5 Julio 2016, 01:11 am



Título: Privilegios de Administrador para comandos de CMD en Java
Publicado por: tamesfern en 5 Julio 2016, 01:11 am
Desde hace un tiempo he estado investigando, y por el momento nada me sirve...

En mi laptop he activado la red hospedada para utilizarla de "router" y compartir el internet por medio del wi fi.

El comando para activar la red hospedada de una laptop es:   
Código:
NETSH WLAN START HOSTEDNETWORK

Sin embargo, se darán cuenta que para ejecutar este comando se necesitan privilegios de administrador. Unos amigos se acaban de enterar de la existencia de la red hospedada y me pidieron un programa que les ayude a manejarla asin tener que estar entrando en el cmd, para hacerlo he elegido el Net Beans para trabajarlo con ventanas.

Ya sé cómo se hace para ejecutar un comando de cmd en java, pero al momento de ejecutar el de iniciar la red me pide el privilegio de administrador, y necesito un códio que haga que se ejecute como tal!

Para practicar al inicio elaboré un batch, y encontré un código que hace que automaticamente me pida la confirmación de seguridad, para no tener que usar el clic derecho>ejecutar como administrador.

Este es el código:




Código:
@echo off

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 .bat
EXIT


Si se copia y se pega esto en un archivo batch y lo ejecutan, verán a lo que me refiero.

Y si se pone el

netsh wlan start hostednetwork

debajo de la línea que dice

REM   INCLUYE AQUÍ TU CÓDIGO DEL FICHERO .bat


se ejecutará sin problema.

Pero no sé cómo meter todas esas líneas para que me funcione en java!!!


Aquí les dejo el código completo de mi batch, espero les sirva, primero para hacerse una idea del programa que busco hacer en java y luego para su propio uso personal.




Código:
@echo off

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' (
    REM echo Solicitando permisos de administrador...
    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 .bat PARA PARAR EL PROCESO DEL ANTIVIRUS

:menu
cls
echo Seleccione su opcion
echo.
echo 1. Iniciar WiFi
echo 2. Apagar WiFi
echo 3. Definir ajustes del WiFi
echo 4. Ver estado del WiFi
echo 5. Ver ajustes de seguridad
echo 6. Salir
echo.
echo.
set /p opc1=
if %opc1%==1 goto :iniciar
if %opc1%==2 goto :apagar
if %opc1%==3 goto :set
if %opc1%==4 goto :show
if %opc1%==5 goto :shows
if %opc1%==6 exit
echo.
echo.

:iniciar
cls
netsh wlan start hostednetwork
pause>nul
goto :menu

:apagar
cls
netsh wlan stop hostednetwork
pause>nul
goto :menu

:set
cls
echo Seleccione su opcion
echo.
echo 1. Cambiar SSID
echo 2. Cambiar contrasena
echo 3. Ir al menu anterior
echo.
echo.
set /p set=

if %set%==1 goto :ssid
if %set%==2 goto :contra
if %set%==3 goto :menu
:ssid
cls
echo Digite el nuevo nombre del WiFi sin espacios
echo.
set /p nombre=
cls
netsh wlan set hostednetwork ssid=%nombre%
pause>nul
goto :set

:contra
cls
echo Digite la nueva contrasena
echo.
set /p clave=
cls
netsh wlan set hostednetwork key=%clave%
pause>nul
goto :set

:show
cls
netsh wlan show hostednetwork
pause>nul
goto :menu

:shows
cls
netsh wlan show hostednetwork setting=security
pause>nul
goto :menu
EXIT




Es súper funcional y me ha ayudado en montones, y me muero por traducirlo a java.
Lo único que me hace falta es el netsh wlan start hostednetwork  :-(

Alguien que me ayude...

Lo agradecería infinitamente!!!!


Título: Re: Privilegios de Administrador para comandos de CMD en Java
Publicado por: daryo en 6 Julio 2016, 19:25 pm
sabes ingles?
http://stackoverflow.com/questions/19037339/run-java-file-as-administrator-with-full-privileges