Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Problema con ShellExecute (https://www.clubdelphi.com/foros/showthread.php?t=94488)

DenisDiaz 02-03-2020 21:35:52

Problema con ShellExecute
 
Hola a todos.
Tengo un problema con esa función. Hay un archivo .BAT que si lo ejecuto manualmente funciona bien, pero si lo ejecuto desde la aplicación me da el error "No se encuentra el archivo de comandos ...getadmin.vbs", entonces supongo que sea problema de la forma como lo ejecuto pero no veo qué cambiar, el código para ejecutarlo que uso es este:
Código Delphi [-]
ShellExecute(GetActiveWindow(), 'open', ruta, nil, nil, SW_NORMAL);

y el archivo .bat contiene lo siguiente:

Código:

@echo off
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"
)
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 mas otro codigo especifico

Con ese .BAT lo que intento es ejecutar como administrador unos comandos para eliminar unos archivos que están en C.
Muchas gracias.

Neftali [Germán.Estévez] 03-03-2020 08:57:43

Prueba a ejecutarlo de esta manera:


Código Delphi [-]
ShellExecute (0, 'open', PChar('c:\Directorio\FicheroBAT.bat'), nil, PChar('c:\Directorio\'), SW_NORMAL)

movorack 03-03-2020 14:29:47

El programa lo ejecutas manualmente o lo ejecuta alguna tarea programada o servicio?

Prueba a cambiar el 'open' por 'runas'
Código Delphi [-]
ShellExecute (0, 'runas', PChar('c:\Directorio\FicheroBAT.bat'), nil, PChar('c:\Directorio\'), SW_NORMAL)

DenisDiaz 03-03-2020 16:51:43

Muchas gracias a todas las respuestas.
De momento parece que me funciona con el ajuste poniendo "RUNAS".


La franja horaria es GMT +2. Ahora son las 00:49:14.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi