elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  [BATCH] Acceso denegado en REG QUERY
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [BATCH] Acceso denegado en REG QUERY  (Leído 3,990 veces)
Meine programmen

Desconectado Desconectado

Mensajes: 121



Ver Perfil
[BATCH] Acceso denegado en REG QUERY
« en: 1 Enero 2013, 14:43 pm »

Hace algo de tiempo que estoy haciendo pruebas e intentando hacer un trozo de codigo que vaya cambiando al programa de carpeta de manera aleatoria. Otros objetivos del codigo son contener la ruta de la carpeta en una clave del registro y que no necesite mas de una sola ventana para funcionar correctamente. Al principio el codigo funciona bien, si no existe la clave del registro la crea con su ruta y vuelve a empezar, y si existe y la ruta que contiene la clave es la misma en la que esta el programa, se copia a una carpeta aleatoria y ejecuta la copia. Si la ruta de la clave es diferente a la del programa, el programa elimina la carpeta de la anterior copia (Cuya ruta esta en la clave) y vuelve a empezar. El problema esta que al volver a empezar despues de haber borrado la anterior copia, el comando REG QUERY deniega el acceso y el programa no puede leer la clave del registro. Habia pensado en usar el comando runas en lugar de un GOTO en el momento de volver a empezar el programa, pero eso implicaria abrir otra ventana. Pongo el codigo abajo, probablemente tenga mas fallos que el que ya nombre. Espero que alguien pueda ayudarme, muchas gracias de antemano.

Código:
@ECHO OFF
SetLocal EnableDelayedExpansion
:SeteandoVariables
SET ClaveDelRegistro=HKLM\SOFTWARE
SET ValorDelRegistro=CD
SET MELT=1
SET NAME=

:ModificandoClaveDelRegistro
REG QUERY "%ClaveDelRegistro%" /v "%ValorDelRegistro%">temp
FOR /F "tokens=3*" %%A IN ('findstr REG_SZ "temp"') DO (IF "%%B" NEQ "" SET B= %%B
SET RutaAntigua=%%A!B!)
REG ADD "%ClaveDelRegistro%" /v "%ValorDelRegistro%" /f /d "%~dp0
IF "%RutaAntigua%"=="" (GOTO SeteandoVariables)
IF "%RutaAntigua%" NEQ "%~dp0" (SET MELT=0)
IF "%RutaAntigua%" NEQ "" IF %MELT%==0 ATTRIB -H -S "%RutaAntigua:~0,-1%" /S /D
IF "%RutaAntigua%" NEQ "" IF %MELT%==0 CD "%RutaAntigua%"
IF "%RutaAntigua%" NEQ "" IF %MELT%==0 FOR /R %%A IN (*.*) DO (DEL /P "%%A")
IF "%RutaAntigua%" NEQ "" IF %MELT%==0 cd ..
IF "%RutaAntigua%" NEQ "" IF %MELT%==0 rd /S "%RutaAntigua%"

:EligiendoCarpeta
CD /D %HOMEDRIVE%\
SET /A MAX=%RANDOM% %% 4000 + 1000
FOR /D /R %%A IN (*) DO (SET Carpeta=%%A
SET /A NUM=!RANDOM! %% %MAX% + 1
IF !NUM!==1 (GOTO ComprobandoErrorN1))

:ComprobandoErrorN1
echo %Carpeta%
IF %ERRORLEVEL% NEQ 0 (GOTO EligiendoCarpeta)
IF "%CARPETA%" NEQ "%CARPETA:)=%" (GOTO EligiendoCarpeta)

:GenerandoNombre
SET /A CHARNUM=%RANDOM% %% 25 + 1
SET CONT=0
FOR /L %%A IN (1,1,%CHARNUM%) DO (
SET /A CHAR=!RANDOM! %% 51
FOR %%B IN (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 1 2 3 4 5 6 7 8 9 0 ! @ # $ ~ ( = [ ] { } . , ; ' - _ +) DO (
SET /A CONT=!CONT!+1
IF !CHAR!==!CONT! SET CHAR=%%B
)
IF !CHAR!==0 (SET CHAR= )
SET NAME=!NAME!!CHAR!
SET CONT=0
)

:Informando
echo %NAME%
echo %MELT%

:ComprobandoMelt
IF %MELT%==0 (echo NO MELT THIS TIME)
IF %MELT%==0 (GOTO SeteandoVariables)

:CreandoCarpeta
cd "%Carpeta%"
md "%NAME%"
ATTRIB +H +S "%NAME%"
cd "%NAME%"

:Copiando
copy "%~f0" "CD.bat"
pause


:AbriendoCopia
"%Carpeta%\%NAME%\CD.bat"


« Última modificación: 1 Enero 2013, 15:41 pm por EleKtro H@cker » En línea

REMEMBER! Reality is an illusion, the universe is a hologram, BUY GOLD! BYE!!

Segadorfelix

Desconectado Desconectado

Mensajes: 157



Ver Perfil
Re: [BATCH] Acceso denegado en REG QUERY
« Respuesta #1 en: 4 Enero 2013, 23:54 pm »

¿que mensaje te sale?  :huh:


En línea

Meine programmen

Desconectado Desconectado

Mensajes: 121



Ver Perfil
Re: [BATCH] Acceso denegado en REG QUERY
« Respuesta #2 en: 5 Enero 2013, 12:00 pm »

Devuelve solamente
Código:
Acceso denegado.
A partir de ahi los demas comandos fallan.
En línea

REMEMBER! Reality is an illusion, the universe is a hologram, BUY GOLD! BYE!!

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.817



Ver Perfil
Re: [BATCH] Acceso denegado en REG QUERY
« Respuesta #3 en: 5 Enero 2013, 16:00 pm »

No creo que el problema séa del REG QUERY,
Y no me extraña que salga Acceso denegado, si la carpeta la elijes aleatóriamente y puede ser cualquier carpeta protegida dle sistema, no le das permisos al usuario para copiar el archivo en esa carpeta, a mi por ejemplo se me ha intentado copiar en una carpeta del sistema que necesita privilegios de admin.

Aparte, hay un fallo grave en el script, el caracter del "espacio" deberías removerlo o mejorarlo,
El batch puede crear esta carpeta:
Código:
"C:\carpeta\E "
"C:\carpeta\ E"
Windows automáticamente elimina el espacio tanto a la izquiera como a la derecha del nombre, así que no podría acceder a esas carpetas porque el script no podría encontrarlas.

Prueba así:

Código
  1. :CreandoCarpeta
  2. (
  3. Takeown /F "%Carpeta%" /R /D S
  4. Icacls     "%Carpeta%" /Grant "%USERNAME%":F /T
  5. ATTRIB     "%Carpeta%" -A -R -S -H -I /D /S
  6. mkdir      "%Carpeta%\%NAME%"
  7. Takeown /F "%Carpeta%\%NAME%"
  8. Icacls     "%Carpeta%\%NAME%" /Grant "%USERNAME%":F
  9. ATTRIB     "%Carpeta%\%NAME%" -A -R -S -H -I
  10. ) >NUL
  11.  
  12. :Copiando
  13. Copy /Y "%~f0"   "CD.bat"                  1>NUL
  14. Move /Y "CD.bat" "%Carpeta%\%NAME%\CD.bat" 1>NUL || (GOTO:SeteandoVariables)
  15.  
  16. :AbriendoCopia
  17. Start /B "" "%Carpeta%\%NAME%\CD.bat"

Saludos.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Al renombrar la carpeta con un batch me dice acceso denegado solo cuando hago algun cambio
Scripting
Nucleorion 0 3,150 Último mensaje 24 Mayo 2023, 15:17 pm
por Nucleorion
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines