[Ayuda] Programa .bat

Iniciado por TMarmol, 4 Abril 2012, 03:19 AM

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

TMarmol

Bueno estoy creando un programa que haga diversas funciones para las cuales necesita estar en modo administrador, como puedo hacer para que el programa detecte si esta en modo admin o no?

yo habia pensado convariables pero no se como hacerlo.
Lo que quiero es si esta en modo admin no pase nada se ejecute el programa y ya pero si no lo esta que salte un msgbox con un mensaje de alerta y que se cierre el programa.

es en .bat por si no habeis leido el titulo

$Edu$

Utilizando el comando && seguido de un comando clasico de administrador, entonces sabras si el anterior comando se ejecuto o no, si no se ejecuto es porque no es admin..

Dije ese disparate para que me quede este post como que participe y luego en casa hago la prueba que me quiero sacar esa duda que se me ocurrio xD

Eleкtro

Hombre, Lo que dijo $Edu$ es una opción, Sería algo así:

Código (DOS) [Seleccionar]
REM Comando que requiera privilegios de Admin para "probar" los privilegios + el resto de comandos:
Mkdir "%Windir%\System32\Test" && comando1 & comando2 &...



También puedes hacerlo de la siguiente manera, Comprobando si el usuario está dentro del grupo "administradores":

Código (dos) [Seleccionar]

@Echo OFF

NET User "%username%" | find "Admin" >NUL
IF NOT %ErrorLevel% EQU 0 (
     ECHO: msgbox "No tiene privilegios de Administrador.",16,"ALERTA" > "%TEMP%\Msgbox.vbs"
     Start /B Wscript "%TEMP%\Msgbox.vbs"
     Exit /B 1
)

REM El resto de tu script aquí...
Pause
Exit


Salu2.








TMarmol

Cita de: EleKtro H@cker en  4 Abril 2012, 05:10 AM
Hombre, Lo que dijo $Edu$ es una opción, Sería algo así:

Código (DOS) [Seleccionar]
REM Comando que requiera privilegios de Admin para "probar" los privilegios + el resto de comandos:
Mkdir "%Windir%\System32\Test" && comando1 & comando2 &...



También puedes hacerlo de la siguiente manera, Comprobando si el usuario está dentro del grupo "administradores":

Código (dos) [Seleccionar]

@Echo OFF

NET User "%username%" | find "Admin" >NUL
IF NOT %ErrorLevel% EQU 0 (
    ECHO: msgbox "No tiene privilegios de Administrador.",16,"ALERTA" > "%TEMP%\Msgbox.vbs"
    Start /B Wscript "%TEMP%\Msgbox.vbs"
    Exit /B 1
)

REM El resto de tu script aquí...
Pause
Exit


Salu2.
Gracias funciono pero sigo teniendo un problema:
El primer codigo funciona pero una vez que ejecutas el programa en modo admin,
las siguientes veces pone que el archivo ya existe, he porbado con el comando del:

Código (dos) [Seleccionar]
@echo off
Mkdir "%Windir%\System32\Test" &&goto :2 &del /q "%Windir%\System32\Test"
echo Para continuar ejecute el Installer en modo Admin
pause>nul
exit


pero no lo elimina

y el segundo comando se queda la ventana en negro o se cierra rapidamente

$Edu$

Es solo un ejemplo.. supuestamente Elektro H@acker si creas un directorio en System32 es porque sos administrador, sino no, pero obviamente si no borras la carpeta la proxima vez dira que existe.

Entonces haces asi igual:

Código (dos) [Seleccionar]

@echo off
Mkdir "%Windir%\System32\Prueba3" &&goto :admin
echo No eres administrador, ejecute el Installer como administrador.
pause>nul
exit

:admin
rd /q /s "%Windir%\System32\Prueba3"
echo Bienvenido a la instalacion...
pause>nul



Ya me diras si anda o no, que no tengo para probar

Eleкtro

   
Advertencia - mientras estabas escribiendo, una nueva respuesta fue publicada. Probablemente desees revisar tu mensaje.




Es un método más fiable el 2º... Pero bueno si quieres usar el primero, Necesitas usar RD:

Cita de: CMDRD /?
Quita (elimina) un directorio.
RD [/S] [/Q] [unidad:]ruta

Código (dos) [Seleccionar]
RD /Q "%Windir%\System32\Test"


PD: Dices que el segundo comando se te queda la ventana en negro, Como ya explicó $Edu$ de eso se trata xD, Si el primero falla, el resto de la serie de comandos que le sigan no se ejecutarán (Siempre que uses el operador "&&" en todos los comandos que le sigan.).


Salu2.








TMarmol

Gracias! ya me funciono podeis cerrarlo