(Ayuda,) Cambiar asociaciones de JPG o PNG con un BAT

Iniciado por DekerMD, 17 Noviembre 2014, 15:36 PM

0 Miembros y 1 Visitante están viendo este tema.

Eleкtro

#10
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 (dos) [Seleccionar]
@Echo OFF

Set "RegKey=HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.png\UserChoice"

".\SetACL.exe" -on "%RegKey%" -ot "reg" -ownr "n:%UserName%"        -rec "Yes" -actn "setowner" -silent
".\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!








Eleкtro

#11
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 (ini) [Seleccionar]
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\.png]
@="MyAssoc.PNG"
[HKEY_CLASSES_ROOT\MyAssoc.PNG]
@="Imagen PNG"
[HKEY_CLASSES_ROOT\MyAssoc.PNG\Shell\Open\Command]
@="\"C:\\Windows\\System32\\mspaint.exe\" \"%1\""

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.png]
@="MyAssoc.PNG"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\MyAssoc.PNG]
@="Imagen PNG"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\MyAssoc.PNG\Shell\Open\Command]
@="\"C:\\Windows\\System32\\mspaint.exe\" \"%1\""

[-HKEY_CLASSES_ROOT\.png\OpenWithProgIds]
[-HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.png\OpenWithList]
[-HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.png\OpenWithProgids]
[-HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.png\UserChoice]


En Batch:
Código (dos) [Seleccionar]
@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

(
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


PD: Lo mismo para el formato JPG

Saludos








DekerMD

#12
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
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
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


@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

Eleкtro

#13
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:
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:
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 si el tema está resuelto.








DekerMD

Genial no avia caiedo en eso :D

%FileExtension%

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