Hola a todos.. ;-)
La verdad, no soy un experto en programación, pero, día a día aprendo más.
En la web encontré el siguiente código que asegura brindar a un (bat) los derechos de administrador en Windows 10 sin tantos bloqueos.
En este caso estoy intentando borrar una carpeta que está ubicada en los (PROGRAMASFILES) pero no me permite el acceso en Windows 10.
Agradezco amigos me puedan colaborar con su valiosa ayuda.
@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
ECHO.
if %PROCESSOR_ARCHITECTURE%==x86 (goto Uni32bit) else if %PROCESSOR_ARCHITECTURE%==AMD64 (goto Uni64bit)
:Uni32bit
CD %PROGRAMFILES%
TASKKILL /F /IM "JAHER\JAHER.exe"
RD /S /Q "JAHER"
DEL /F /Q %0
Exit
:Uni64bit
net user administrador /active:yes
CD %PROGRAMFILES(X86)%
RD /S /Q "JAHER"
DEL /F /Q %0
Exit
EXIT
El problema era q no mataba el proceso, Bueno aqui esta
(Funcionando correctamente en Win7 32bits y 64 bits) , Me avisas si te sirvió.
@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
ECHO.
if %PROCESSOR_ARCHITECTURE%==x86 (goto Uni32bit) else if %PROCESSOR_ARCHITECTURE%==AMD64 (goto Uni64bit)
:Uni32bit
goto Condicional
:Uni64bit
net user administrador /active:yes
goto Condicional
:Condicional
tasklist | find /i "JAHER.exe" && (
TASKKILL /IM "JAHER.exe" /F
echo Proceso Encontrado y Terminado, Procedemos a eliminar la carpeta . . .
goto delete
) || (
echo Proceso no Abierto Procedemos a eliminar la carpeta . . .
)
goto delete
:delete
cls
color a
cd "%PROGRAMFILES%"
set Folder=JAHER
if exist %folder% (
RD /S /Q %Folder%
echo La Carpeta %folder% Fue Eliminada.
pause
DEL /F /Q %0
) else (
echo La Carpeta no existe.
pause
DEL /F /Q %0
)
exit
Hola amigo ( **Aincrad** ) ;-)
Muchas gracias por tu ayuda, la verdad si me funciono en parte el cambio.
Se lemina el archivo (JAHER.exe), de forma correcta, pero no se borra la carpeta..
Al final de ejecutar el archivo me aparaece la opción:
echo La Carpeta no existe.
pause
Pero bueno, para que no me consulte para precionar una tecla para continuar, elimine ( pause ).
Lo que si me gustaría saber es si el primer codigo hasta la opción ( REM ) funciona para brindar derechos de administrador a codigos bat que tengo..?
Gracias por la ayuda de antemano... ;D
@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
AQUI EL CODIGO BAT....?
EXIT
Saludos,
- En los nuevos Windows suele ser más sencillo utilizar:
@echo off
fsutil dirty query %systemdrive% >nul 2>&1 || (
powershell start-process %0 -verb runas
exit
)
echo Tengo permisos de Administrador a partir de ahora
pause
Hola amigo ( EdePC ) ....
Muchas gracias por tu ayuda, lamentablemente en el código anterior se crea el scrip (getadmin.vbs), pero al no encontrarlo presenta un error.
Luego en el cambio que realizo el amigo ( **Aincrad** ), igualmente presenta error.
Se activa la cuenta de administrador.
net user administrador /active:yes
Y al iniciar la PC molesta ver la cuenta activa.
Voy a probar tu aporte amigo y te comento.