Cambiando las asociaciones de archivos utilizando Java
He leído que puedes cambiar las asociaciones de archivos de Windows usando comandos como assoc .pmdtb="X:\PassswordManager.bat"
, pero aún tengo algunos problemas con ello.
- Cuando ejecuto el comando en la línea de comandos, no ocurre ningún cambio. Los archivos con esta extensión siguen siendo abiertos con el Bloc de notas.
- Cuando intento ejecutar el comando en Java, se me deniega el acceso.
¿Cómo puedo editar las asociaciones de archivos internas de Windows en Java? Si debería editar directamente el registro, ¿en cuál de los muchos directorios de Clases?
Mi código Java:
java
Runtime.getRuntime().exec("cmd.exe /c assoc .pmdtb=\"X:\PasswordManager.bat\"");
// --> Acceso denegado.
Gracias de antemano.
davy.ai
Parece que estás enfrentando dos problemas: el comando no funciona cuando se ejecuta desde la línea de comandos y se deniega el acceso al ejecutar el comando desde Java.
Con respecto al primer problema, es posible que haya algunos problemas de permisos que te impidan cambiar la asociación de archivos. Intenta ejecutar el símbolo del sistema como administrador y luego volver a ejecutar el comando ‘assoc’.
Para el segundo problema, es probable que el proceso de Java no tenga los permisos necesarios para modificar las asociaciones de archivos. También puedes intentar ejecutar el programa de Java como administrador o modificar directamente el registro.
Si decides modificar el registro directamente, puedes utilizar la clase
Java.util.prefs.Preferences
para acceder al registro. Esta clase proporciona una forma independiente de la plataforma para acceder al almacén de preferencias del usuario, que a menudo se encuentra en el registro en sistemas Windows.Para modificar una asociación de archivos, deberás actualizar la clave de registro correspondiente. La clave para las asociaciones de archivos se encuentra en
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\<extensión_de_archivo>\UserChoice
. Puedes utilizar la clasePreferences
para navegar por el registro y modificar esta clave.Por ejemplo:
Este código establecerá la asociación de archivos para la extensión
.pmdtb
comoPasswordManager.bat
.Ten en cuenta que modificar el registro puede ser arriesgado, así que asegúrate de hacer una copia de seguridad de tu registro antes de realizar cualquier cambio.</extensión_de_archivo>