Pregunta

Estamos trabajando con un código heredado que accede a un disco compartido por la letra (por ejemplo, f: \). Usar la notación UNC no es una opción. Nuestra aplicación de envoltura Java se ejecutará como un servicio y, como primer paso, me gustaría asignar el disco explícitamente en el código. ¿Alguien ha hecho esto?

¿Fue útil?

Solución

Considere ejecutar el comando DOS que asigna una unidad de red como en el siguiente código:

String command = "c:\\windows\\system32\\net.exe use f: \\\\machine\\share /user:user password";
Process p = Runtime.getRuntime().exec(command);
...

Ver detalles sobre el comando de uso de red:

The syntax of this command is:


NET USE
[devicename | *] [\\computername\sharename[\volume] [password | *]]
        [/USER:[domainname\]username]
        [/USER:[dotted domain name\]username]
        [/USER:[username@dotted domain name]
        [/SMARTCARD]
        [/SAVECRED]
        [[/DELETE] | [/PERSISTENT:{YES | NO}]]

NET USE {devicename | *} [password | *] /HOME

NET USE [/PERSISTENT:{YES | NO}]

Otros consejos

Puedes usar JCIFS

http://jcifs.samba.org/src/ docs / api / jcifs / smb / SmbFile.html

o si desea una API de nivel superior y soporte para otros protocolos como FTP, Zip y otros:

http://commons.apache.org/vfs/filesystems.html

Ambas opciones son Java puro y multiplataforma.

Creo que la forma más fácil es usar el método Runtime.getRuntime (). exec () y llamar al " uso neto " comando.

Por ejemplo:

    try {
        // Execute a command without arguments
        String command = "C:\\Windows\\system32\\net.exe use F: \\\\server\\share /user:user password";
        Process child = Runtime.getRuntime().exec(command);
    } catch (IOException e) {
    }
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top