Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: DekerMD en 17 Noviembre 2014, 15:36 pm



Título: (Ayuda,) Cambiar asociaciones de JPG o PNG con un BAT
Publicado por: DekerMD en 17 Noviembre 2014, 15:36 pm
Hola, ;)

Espero me puedan ayudar, tengo mas de 1 mes buscando y nada aun sigo verde :(
 
Trabajo en una empresa que hace computadoras, tables y de mas cosas.
mi trabajo es revisar muchas cosas entre ellas ver imágenes JPG, PNG, ETC.
pero las imágenes cual sea su formato es virgen y a cada rato tengo que elegir conque programa se abre cada Imagen (Visualizado de fotos de Windows)
lo que podre lograr asta ahora es esto, con mi "prueba1.bat"
 
Código:
rundll32.exe %SystemRoot%\System32\shimgvw.dll, ImageView_Fullscreen F:\Prueba.png

Que hace?, Solo abre la imagen en el visor de fotos de Windows pero no modifica ni lo pone como predeterminado a usar para todas las fotos con formato .PNG que al fin y al cabo es lo que busco que a todas las fotos que tengan ese formato se abran ya por DEFAULT con el visor de fotos de windows.
espero a verme echo entender y de antemano Gracias por leer esto y espero su ayudad de verdad esto me ayudaría bastante en mi trabajo.

(http://static.commentcamarche.net/es.kioskea.net/pictures/YZkT7pFEh8yWTXmsZI0sbdrBgl3amizyD4RFQQgdWj3WY5F2hKADuWCPlCCM4M1p-1.png)

esta Operaccion la realizo mas de 300 veces es por eso que me ayudaria mucho aserlo con un solo clip en un .BAT :D o en Leguaje C ++ pero eso le entiendo nada :(

Gracias por tu Tiempo :D


Título: Re: (Ayuda,) Cambiar asociaciones de JPG o PNG con un BAT
Publicado por: Eleкtro en 17 Noviembre 2014, 16:36 pm
¿Por qué la necesidad de utilizar un Script?

Puedes cambiar la asociación de cualquier archivo mediante Windows:
Click derecho > Abrir con... > Elegir programa predeterminado

¿No te sirve eso para llevar a cabo tu propósito?, no se si te entendí bien pero no creo que vayas a querer establecer el programa predeterminado 300 veces al día...

De todas formas si sigues queriendo una herramienta para automatizar la tarea, puedes probar este Script que desarrollé hace años:
[Batch] (APORTE) ASSOC7 (Crea, Asocia, Y desasocia tipos de archivos) (http://foro.elhacker.net/scripting/batch_aporte_assoc7_crea_asocia_y_desasocia_tipos_de_archivos-t355338.0.html;msg1724820#msg1724820)

1) Realiza un backup completo del registro.
2) Utiliza el siguiente comando:
Código
  1. ASSOC7.exe -a ".png" "mspaint.exe"

Saludos


Título: Re: (Ayuda,) Cambiar asociaciones de JPG o PNG con un BAT
Publicado por: DekerMD en 17 Noviembre 2014, 20:04 pm
Gracias...
se ve que si me va servir
solo que ya vi el Trabajo que usted realizo y no encontré la manera de solucionar el problema de los 64 bits

le dejo una Foto de las dos formas que realice y en las dos el mismo problema :(

URL De la Imagen.
ya que se me iso muy grande para la pagina :(
(https://scontent-b-dfw.xx.fbcdn.net/hphotos-xpf1/t31.0-8/1400323_1567504103478844_8162470886664910383_o.jpg)

veras Lo Hago desde una USB por que mi trabajo me hace meter una USB a mas de 300 PC  para hacerle pruebas y la de la imagen es una de ellas :D
De antemano Gracias.


Título: Re: (Ayuda,) Cambiar asociaciones de JPG o PNG con un BAT
Publicado por: Eleкtro en 17 Noviembre 2014, 20:16 pm
perdona, pero me he perdido un poco :xD ¿de donde sale ese executable?

Ahora veo que me confundí en mi comentario anterior y escribí la extensión "ASSOC7.exe" en lugar de "ASSOC7.bat", quizás hayas mal interpretado eso, perdon, es la costumbre.

Lo siento, hacia mucho que no lo utilizaba, reectifico y te explico de nuevo:

1) Copias el código en un archivo con extensión ".bat", con codificación ANSI (es la codificación por defecto si creas y guardas el archivo desde el Notepad)
2) Llamas al archivo "ASSOC.bat"
3) Ejecutas el siguiente comando (especificando la ruta completa del programa en el segundo parámetro):
Código:
ASSOC.bat -a ".png" "C:\Windows\System32\mspaint.exe"

Debería salirte algo parecido a esto (dependiendo de varios factores):

Código:
png.irfanview_file="C:\Windows\System32\mspaint.exe" "%1"

CORRECTO

Ahora si, ¿te ha funcionado?

Saludos


Título: Re: (Ayuda,) Cambiar asociaciones de JPG o PNG con un BAT
Publicado por: DekerMD en 17 Noviembre 2014, 21:33 pm
Gracias amigo por toda la inf pero lamento decirte con toda la pena del mundo que no me sale te explico como lo estoy asiendo para que me digas como o en que parte estoy mal o ya aprovechando tu ayuda me gustaría si no es mucho pedir que de  alguna manera me pasaras los archivos ya Creados y así yo estudiarlos y ver en que falle o si lo estaba asiendo similar :D

asi lo hago yo Copie este Codigo que dejo usted aqui
http://foro.elhacker.net/scripting/batch_aporte_assoc7_crea_asocia_y_desasocia_tipos_de_archivos-t355338.0.html;msg1724820#msg1724820 (http://foro.elhacker.net/scripting/batch_aporte_assoc7_crea_asocia_y_desasocia_tipos_de_archivos-t355338.0.html;msg1724820#msg1724820)
y lo aguarde asi ( ASSOC.bat )
 despues ise otro Prueba.bat con el digo

Código:
ASSOC.bat -a ".png" "C:\Windows\System32\mspaint.exe"

Cuando lo ejecuto Prueba.bat me sale solo esto.

Asociacion de archivo no encontrada para la extension -a .png

a no se que quieres decir con ".bat", con codificación ANSI


Título: Re: (Ayuda,) Cambiar asociaciones de JPG o PNG con un BAT
Publicado por: Eleкtro en 17 Noviembre 2014, 21:38 pm
Asociacion de archivo no encontrada para la extension -a .png

prueba a utilizar el parámetro "-c" en lugar de "-a", para forzar la creación de la asociación.

saludos


Título: Re: (Ayuda,) Cambiar asociaciones de JPG o PNG con un BAT
Publicado por: DekerMD en 17 Noviembre 2014, 21:54 pm
Nada, :(  ahora no sale nada solo abre el MS-DOS y se cierra sola pero no modifica la forma de abrir de la imagen. sigue pidiéndome con que programa abrir la imagen.
tengo un windows 7 de 64bits no se si sea ese el problema ya que ya lei a detalle tu trabajo y la verdad me suena a que es lo que sensatamente busco.
de antemano perdona las molestias.


Título: Re: (Ayuda,) Cambiar asociaciones de JPG o PNG con un BAT
Publicado por: Eleкtro en 17 Noviembre 2014, 23:12 pm
Si, es lo que buscas, yo lo he testeado tanto en win7 x64 (en su día) y ahora en Win8.1 x64, en mi caso me ha funcionado.

De todas formas puedes hacerlo de forma manual y automatizar la tarea en un script, no es nada dificil.


Prueba a hacerlo de esta manera:

1) Utiliza el comando ASSOC de windows (no mi Assoc.bat) de esta manera:
Código:
assoc | find /I ".png"

Te saldrá la extensión, y a la derecha la clave de registro asociada, algo así:
Código:
.png=png.irfanview_file

Nota: También puedes ver la clave asociada en el valor por defecto de la clave de la extension:
Código:
HKEY_CLASSES_ROOT\.png


2) Abre el regedit, y ve a la ruta de la clave asociada:
Código:
HKEY_CLASSES_ROOT\{CLAVE ASOCIADA}\Shell\Open\Command

Ejemplo:
Código:
HKEY_CLASSES_ROOT\png.irfanview_file\Shell\Open\Command

Nota: Si la clave ...\Shell\Open\Command no existe, creala.


3) Modifica el valor por defecto de la clave "Command" por la aplicación con la que quieres abrir esa extensión.

Ejemplo:
Código:
"C:\Windows\System32\mspaint.exe" "%1" 


¿Cómo automatizar la tarea?, con un script de registro, por ejemplo:

Código
  1. Windows Registry Editor Version 5.00
  2.  
  3. [HKEY_CLASSES_ROOT\.png]
  4. @="CustomAssociation.png"
  5.  
  6. [HKEY_CLASSES_ROOT\CustomAssociation.png\Shell\Open\Command]
  7. @="\"C:\\Windows\\System32\\mspaint.exe\" \"%1\""
  8.  
  9. [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.png\OpenWithProgids]
  10. "CustomAssociation.png"=hex(0):

O con Batch:
Código
  1. :: Converted with Reg2Bat by Elektro
  2.  
  3. @Echo OFF
  4. REG ADD "HKCR\.png"                                     /V "" /D "CustomAssociation.png"                       /F
  5. REG ADD "HKCR\CustomAssociation.png\Shell\Open\Command" /V "" /D "\"C:\Windows\System32\mspaint.exe\" \"%%1\"" /F
  6. Pause&Exit


Si aun así eso no te sirve, puedes intentar buscar otra solución en Google, u otras herramientas más profesionales y que te permitan automatizar la tarea.


Saludos


Título: Re: (Ayuda,) Cambiar asociaciones de JPG o PNG con un BAT
Publicado por: DekerMD en 17 Noviembre 2014, 23:55 pm
Gracias... de igual toda esta información  me la llevare a la empresa para que los amigos que saben mucho mas de Programación puedan saber leer toda tu información y poder hacer que haga lo que busco con dos clip en el .bat  :D


Título: Re: (Ayuda,) Cambiar asociaciones de JPG o PNG con un BAT
Publicado por: DekerMD en 19 Noviembre 2014, 18:39 pm
Buenas de Nuevo :D

un amigo vio Su trabajo y me digo que donde realmente tenia que cambiarse algo es en otra ruta.
en esta para ser mas exactos,
 en esta ruta es notorio el cambio de programas con que se abre .png

Código:
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.png\UserChoice]
"Progid"="PhotoViewer.FileAssoc.Png"
 

lo cual modifico tu código a solo a esto

Código:
REG ADD "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.png\UserChoice" /V "" /D "\"Progid"="PhotoViewer.FileAssoc.Png\" \"%%1\"" /F

lo único malo es que cuando lo Calamos dice (ERROR: Acceso Denegado.)

segun el dice que es es por que el archivo que intentamos Cambiar esta muy bien Protegido y que el no conoce una forma de forzar mas el comando para que deje meter esto :( bueno de antemano Gracias por toda la info me ayudo a entender y mejorara otras cosas que ni tenia en mente mejorar :D
Saludos :D


Título: Re: (Ayuda,) Cambiar asociaciones de JPG o PNG con un BAT
Publicado por: Eleкtro en 20 Noviembre 2014, 01:09 am
Creeme, esa clave de registro que te ha comentado tu compañero no es importante, solo almacena la elección del programa que haces en la lista de programas que te muestra Windows para abrir el archivo (Click derecho > Abrir con...), eso no tiene que ver con la asociación del archivo sino con tu elección favorita.
Aquellas claves que sí tienen que ver con la asociación son las que te expliqué, las claves que modifico en aquél Batch-Script.

EDITO: luego editaré este mensaje para proponerte alguna otra solución



De todas formas te explico el Error de acceso:
A lo que se deniega el acceso es al intento de modificación del registro, no tiene que ver con el archivo en si mismo, el archivo no está protegido;
ciertas partes del registro están protegidas por defecto al igual que ciertos archivos sensibles del sistema están protegidos, ambos necesitan adquirir privilegios para su modificación y/o eliminación (a pesar de que ya seas Administrador en el equipo, un Administrador no tiene privilegios sobre todo).

Puedes utilizar la aplicación SetACL para adquirir privilegios de forma automatizada sobre dicha clave: https://helgeklein.com/download/

Ejemplo, en Batch:
Código
  1. @Echo OFF
  2.  
  3. Set "RegKey=HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.png\UserChoice"
  4.  
  5. ".\SetACL.exe" -on "%RegKey%" -ot "reg" -ownr "n:%UserName%"        -rec "Yes" -actn "setowner" -silent
  6. ".\SetACL.exe" -on "%RegKey%" -ot "reg" -ace  "n:%UserName%;p:full" -rec "Yes" -actn "ace"      -silent

(o también puedes hacerlo de forma manual desde el regedit)

Después de eso ya podrás modificar/eliminar la clave en cuestión.

Saludos!


Título: Re: (Ayuda,) Cambiar asociaciones de JPG o PNG con un BAT
Publicado por: Eleкtro en 20 Noviembre 2014, 17:58 pm
A ver, lo he testeado en una instalación limpia (en una máquina vitual)

En un principio como ya te comenté, el método que yo tutilizo para modificar una asociación me funciona sin problemas (que es la misma metodología que utilizo en aquél Batch-Script),
sin embargo, la extensión PNG (al igual que JPG) son extensiones que ya están registradas por Windows... por defecto, veo varias referencias a alguna CLSID y otras cosas, y, aunque a mi me funcione cómo lo hago, puede que haya obviado algún detalle a tener en cuenta en ciertas circunstancias como las de tu equipo.

Prueba este método "forzoso", reseteando/eliminando las MRU:

Código
  1. Windows Registry Editor Version 5.00
  2.  
  3. [HKEY_CLASSES_ROOT\.png]
  4. @="MyAssoc.PNG"
  5. [HKEY_CLASSES_ROOT\MyAssoc.PNG]
  6. @="Imagen PNG"
  7. [HKEY_CLASSES_ROOT\MyAssoc.PNG\Shell\Open\Command]
  8. @="\"C:\\Windows\\System32\\mspaint.exe\" \"%1\""
  9.  
  10. [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.png]
  11. @="MyAssoc.PNG"
  12. [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\MyAssoc.PNG]
  13. @="Imagen PNG"
  14. [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\MyAssoc.PNG\Shell\Open\Command]
  15. @="\"C:\\Windows\\System32\\mspaint.exe\" \"%1\""
  16.  
  17. [-HKEY_CLASSES_ROOT\.png\OpenWithProgIds]
  18. [-HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.png\OpenWithList]
  19. [-HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.png\OpenWithProgids]
  20. [-HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.png\UserChoice]

En Batch:
Código
  1. @Echo OFF
  2.  
  3. Set "FileExtension=png"
  4. Set "TypeName=MyAssoc.PNG"
  5. Set "FileDescription=Imagen PNG"
  6. Set "Application=C:\Windows\System32\mspaint.exe"
  7.  
  8. (
  9. REG ADD "HKCR\.%FileExtension%"              /V "" /D "%TypeName%"                /F
  10. REG ADD "HKCR\%TypeName%"                    /V "" /D "%FileDescription%"         /F
  11. REG ADD "HKCR\%TypeName%\Shell\Open\Command" /V "" /D "\"%Application%\" \"%%1\"" /F
  12.  
  13. REG ADD "HKLM\SOFTWARE\Classes\.%FileExtension%"              /V "" /D "%TypeName%"                /F
  14. REG ADD "HKLM\SOFTWARE\Classes\%TypeName%"                    /V "" /D "%FileDescription%"         /F
  15. REG ADD "HKLM\SOFTWARE\Classes\%TypeName%\Shell\Open\Command" /V "" /D "\"%Application%\" \"%%1\"" /F
  16. )1>NUL
  17.  
  18. (
  19. REG DELETE "HKCR\.%FileExtension%\OpenWithProgIds"                                                 /F
  20. REG DELETE "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.png\OpenWithList"    /F
  21. REG DELETE "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.png\OpenWithProgids" /F
  22. REG DELETE "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.png\UserChoice"      /F
  23. )1>NUL 2>&1
  24.  
  25. Pause&Exit

PD: Lo mismo para el formato JPG

Saludos


Título: Re: (Ayuda,) Cambiar asociaciones de JPG o PNG con un BAT
Publicado por: DekerMD en 20 Noviembre 2014, 23:53 pm
Muchísimas Gracias por seguir aportando mas información. créeme que para mi es muy importante crear un .bat o algo que solo a dale dos clips este cambio lo haga Automáticamente. ya formatee mi pc 3 veces solo para averiguar como funciona tu trabajo.

sigo de aferrado en averiguar y ver la forma de hacer siempre lo mismo

1 Seleccionar la imagen.PNG con clip Derecho y abrir con dichoso programa.
2 que no es solo una imagen son 3 .PNG  .JPG  .Gif
mi Trabajo normal dura el poseso mas o menos 10 minutos por unidad y Gracias a un .Bat que cree el poseso solo dura 3 minuto
y Gracias a ello nuestro turno es el que saca siempre las metas de Trabajo pero hay operaciones como la de la imagen que me ayudaría agilizar 5 operaciones de Trabajo en fin. Créeme que yo Agradezco mucho el que te tomes las molestia de Ayudarme :D



Pruebas Realizas y  te Confirmo... Gracias :D de verdad Gracias
el Codigo Batch no ase ningún cambio ni en .PNG ni en .JPG :(  Pero si el script ese Automáticamente ase el cambio :D y con eso me vasta y sobra :D

Nuevamente Gracias y voy a estudiarlo para ver como funciona y así aprender mas :D
Ya Dije Gracias? :D en Fin Gracias¡¡¡¡¡¡¡


Editado :D

El Codigo Batch que me dejaste Tenia un Fallo que en la Linia
Código:
REG DELETE "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.png\UserChoice"      /F
Me Faltaban Permisos para poder eliminar el (UserChoice)

asi que agregue una linia y un .txt con esto dentro
Código:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.png\UserChoice [1 17]
y lo llame permiso.txt
y asi quedo Su trabajo :D


En Batch:
Código


Código:
@Echo OFF
 
Set "FileExtension=png"
Set "TypeName=MyAssoc.PNG"
Set "FileDescription=Imagen PNG"
Set "Application=C:\Windows\System32\mspaint.exe"
 
(
REG ADD "HKCR\.%FileExtension%"              /V "" /D "%TypeName%"                /F
REG ADD "HKCR\%TypeName%"                    /V "" /D "%FileDescription%"         /F
REG ADD "HKCR\%TypeName%\Shell\Open\Command" /V "" /D "\"%Application%\" \"%%1\"" /F
 
REG ADD "HKLM\SOFTWARE\Classes\.%FileExtension%"              /V "" /D "%TypeName%"                /F
REG ADD "HKLM\SOFTWARE\Classes\%TypeName%"                    /V "" /D "%FileDescription%"         /F
REG ADD "HKLM\SOFTWARE\Classes\%TypeName%\Shell\Open\Command" /V "" /D "\"%Application%\" \"%%1\"" /F
)1>NUL
 
(

regini.exe C:\Users\Deker\Desktop\permiso.txt

REG DELETE "HKCR\.%FileExtension%\OpenWithProgIds"                                                 /F
REG DELETE "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.png\OpenWithList"    /F
REG DELETE "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.png\OpenWithProgids" /F
REG DELETE "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.png\UserChoice"      /F
)1>NUL 2>&1
 
Pause&Exit

Bueno Creo que esto es Todo Gracias por todo, aprendí mucho con esto :D
Gracias Eleкtro


Título: Re: (Ayuda,) Cambiar asociaciones de JPG o PNG con un BAT
Publicado por: Eleкtro en 21 Noviembre 2014, 20:27 pm
Lo que comentas no fue un fallo, te expliqué que podías utilizar la aplicación SetACL para adquirir privilegios, con la aplicación RegIni puedes cambiar los permisos pero no el propietario, aunque si con cambiar los permisos te sirve para el caso entonces perfecto y no se hable más :P.

Donde si que cometí un fallo con las prisas es aquí, se me olvidó añadir la variable para eliminar las claves de forma dinámica:
Código:
REG DELETE "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.png\OpenWithList"    /F
REG DELETE "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.png\OpenWithProgids" /F
REG DELETE "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.png\UserChoice"      /F

Cambialo por:
Código:
REG DELETE "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.%FileExtension%\OpenWithList"    /F
REG DELETE "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.%FileExtension%\OpenWithProgids" /F
REG DELETE "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.%FileExtension%\UserChoice"      /F

Me alegro de que te haya servido :)

Saludos, y no olvides modificar tu mensaje principal para utilizar el icono de resuelto (http://foro.elhacker.net/Themes/default/images/post/topicsolved.gif) si el tema está resuelto.


Título: Re: (Ayuda,) Cambiar asociaciones de JPG o PNG con un BAT
Publicado por: DekerMD en 21 Noviembre 2014, 20:38 pm
Genial no avia caiedo en eso :D

Código:
%FileExtension%

Gracias Por todo :D me despido y ya pongo esto Como resuelto. y esto Gracias a vos :D Gracias¡¡¡
Saludos :D