es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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.

  1. 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.

  2. 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.

Tags:  , , , ,

Answer

  1. Avatar for 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 clase Preferences para navegar por el registro y modificar esta clave.

    Por ejemplo:

    import java.util.prefs.Preferences;
    
    public class EjemploAsociacionDeArchivo {
        public static void main(String[] args) {
            Preferences userPrefs = Preferences.userRoot().node("Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\FileExts\\.pmdtb\\UserChoice");
            userPrefs.put("Progid", "PasswordManager.bat");
            userPrefs.put("Hash", "ValorDeHashAleatorio");
        }
    }
    

    Este código establecerá la asociación de archivos para la extensión .pmdtb como PasswordManager.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>

Comments are closed.