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
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
Hombre, Lo que dijo $Edu$ es una opción, Sería algo así:
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":
@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.
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í:
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":
@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:
@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
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:
@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
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
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.
Gracias! ya me funciono podeis cerrarlo