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

 

 


Tema destacado: Introducción a Git (Primera Parte)


  Mostrar Temas
Páginas: [1]
1  Sistemas Operativos / Windows / Ejecutar un .bat minimizado desde menú contextual en: 13 Noviembre 2015, 13:40 pm
Se trata de un programa bat para mover archivos .mp4. He llegado hasta ejecutar el bat pero no consigo que lo haga minimizado. Siempre me pega el fogonazo negro aunque se ejecuta bien.

Para ponerlo en el menú contextual uso estas claves:
Código:
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\VLC.mp4\shell\Mover a Pelis\command]
c:\windows\system32\cmd.exe /c c:\w\prog\trastra\movepel.bat %1

Ya he probado sin resultado a poner en el registro:
Código:
c:\windows\system32\cmd.exe /c start /min c:\w\prog\trastra\movepel.bat %1

Tampoco funciona con acceso directos .lnk en el registro y que éstos llamen al bat. Se ejecuta pero no minimizado aunque expresamente lo indique en la propiedades del acceso directo.

Sólo me queda probar a hacer un lanzador en VB6 que ejecute el bat o convertir el bat en exe que es casi lo mismo.

Con un lanzador funciona bien:
Código
  1. Private Sub Form_Load()
  2. Shell "c:\w\prog\trastra\renosrt4.bat " & Command, vbHide
  3. End
  4. End Sub
  5.  

Pero sigo pensando que debe haber otro método. Es demasiado rebuscado:
Registro --> VB6.exe --> .bat

¿Se os ocurre algo más para no usar un lanzador? Muchas gracias y saludos.
2  Programación / Programación Visual Basic / Programa para borrar archivos desde MSDOS y pasen a la papelera en: 11 Noviembre 2015, 11:40 am
Me interesa un programa que haga desde MSDOS:
programa pepe.txt
que mueva el archivo automáticamente a la papelera.

En Windows, las papeleras tienen un nombre exclusivo del usuario con muchos números y además puede ser recycled (con D) según la versión de Windows c:\recycler\1-2-3-3433-343434-343434 por tanto hablaré de Windows XP que es el que tengo.

Para entrar en esas rutas, usar dir /a /x que muestra todos los archivos incluso ocultos y /x para que muestre nombres cortos y poder escribirlos rápido al hacer "cd".

En ese directorio hay un fichero oculto llamados INFO2 que tiene el registro de archivos borrados, otro llamado desktop.ini que tiene las propiedades de la carpeta que indican que es una papelera y una serie de ficheros llamados DXNNN.EXT que son los ficheros almacenados que se borraron. La X es la unidad donde estaba el archivo, NNN es un número correlativo y EXT es la extensión original.

He visto que hay gente que cree que en bat puede usarse la papelera para guardar archivos borrados, pero es falso. Aunque se copien archivos dentro de esas carpetas, no se actualiza el archivo INFO2 y luego al consultar la papelera desde el Explorador de Windows, no aparecen.

Sería posible vaciar la papelara desde .bat y hasta incluso seudorestaurar archivos dejando la copia en la papelera, pero nunca meterlos sin tocar el INFO2.

Opciones para construir el programa de borrado de un archivo desde MSDOS a través de la papelera:
1.- Crear una papelera alternativa en bat donde mover los archivos, que puede ser incluso c:\recycled, pero ya digo de antemano que poner un archivo ahí no actualiza INFO2 y no sale en la papelera realmente.
Hay que crear programa llamado "delp.bat" y meterlo en alguna ruta de búsqueda del PATH:
Código:
@echo off
move /y %* \recycler
El solito se encarga de buscar la unidad si es C:, D:...
2.- Usar la papelera de Windows y tras mover el archivo habría que tocar el INFO2. Para ello puede usarse el manual de la estructura del archivo INFO2 y la papelera de Windows: http://www.bandwidthco.com/whitepapers/compforensics/windows/Forensic%20Analysis%20of%20Microsoft%20Windows%20Recycle%20Bin%20Records.pdf

Sigo con el punto 2.

UNICODE Recycled Name File                        Variable, NULL terminated                     Start of Record+0x11C    

- Crear un programa que lea INFO2 para hacer pruebas. Ya hay uno llamado "rifiuti" pero necesito programarlo desde 0 para que sea la base de los añadidos a INFO2.
Código
  1. Const lonreg = &H320
  2. Private Type FILETIME
  3.        dwLowDateTime As Long
  4.        dwHighDateTime As Long
  5. End Type
  6. Private Type SYSTEMTIME
  7.        wYear As Integer
  8.        wMonth As Integer
  9.        wDayOfWeek As Integer
  10.        wDay As Integer
  11.        wHour As Integer
  12.        wMinute As Integer
  13.        wSecond As Integer
  14.        wMilliseconds As Integer
  15. End Type
  16. Private Declare Function FileTimeToSystemTime Lib "kernel32" _
  17. (lpFileTime As FILETIME, lpSystemTime As SYSTEMTIME) As Long
  18. Private Declare Function FileTimeToLocalFileTime Lib "kernel32" _
  19. (lpFileTime As FILETIME, lpLocalFileTime As FILETIME) As Long
  20. Private Sub Form_Activate()
  21. Dim udtFileTime As FILETIME
  22. Dim udtFileTime2 As FILETIME
  23. Dim udtSystemTime As SYSTEMTIME
  24.  
  25. Dim a As String * lonreg
  26. x = 1
  27. Open "d:\recycler\S-1-5-~1\info2" For Random As 1 Len = lonreg
  28. ultireg = Fix(LOF(1) / lonreg)
  29. aju = lonreg - &H10
  30.  
  31. otro1:
  32. DoEvents
  33. If x > ultireg Then GoTo sale
  34. Get 1, x, a
  35. a = Right(a, aju) ' Ajuste registro por cabecera fichero
  36. If Mid(a, 5, 1) = Chr(0) Then GoTo otro3 ' Descarta los ya borrados
  37.  
  38. n1 = Mid(a, 5, InStr(5, a, Chr(0)) - 5)
  39. Print "Nombre: "; n1
  40.  
  41. pp = &H108: GoSub saca
  42. Print "Identificación: "; nn
  43.  
  44. q = Asc(Mid(a, &H10D, 1)) + Asc("A")
  45. Print "Disco: "; Chr(q)
  46.  
  47. pp = &H110: GoSub saca
  48. udtFileTime.dwLowDateTime = nn
  49. pp = &H114: GoSub saca
  50. udtFileTime.dwHighDateTime = nn
  51. FileTimeToLocalFileTime udtFileTime, udtFileTime2
  52. FileTimeToSystemTime udtFileTime2, udtSystemTime
  53. q = udtSystemTime.wDay & "/" & udtSystemTime.wMonth & "/" & udtSystemTime.wYear
  54. q = q & " " & udtSystemTime.wHour & ":" & udtSystemTime.wMinute
  55. Print "Fecha borrado: "; q
  56.  
  57. pp = &H118: GoSub saca
  58. Print "Tamaño físico en disco: "; nn
  59.  
  60. Print
  61.  
  62. otro3:
  63. x = x + 1
  64. GoTo otro1
  65.  
  66. saca:
  67. n = ""
  68. For f = pp + 1 To pp + 4
  69. n2 = Hex(Asc(Mid(a, f, 1)))
  70. If Len(n2) = 1 Then n2 = "0" & n2
  71. n = n2 & n
  72. Next f
  73. nn = Val("&h" & n)
  74. If nn < 0 Then nn = nn + 65536
  75. Return
  76.  
  77. sale:
  78. Close
  79. End Sub
  80.  
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines