¿Cómo puedo montar una unidad de Windows en Java?

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

Considere ejecutar el comando DOS que mapea 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 net use:

 La syntax de este comando es:


 USO NETO
 [devicename |  *] [\\ computername \ sharename [\ volume] [contraseña |  *]]
         [/ USER: [nombre de dominio \] nombre de usuario]
         [/ USER: [nombre de dominio punteado \] nombre de usuario]
         [/ USER: [nombre de usuario @ nombre de dominio punteado]
         [/TARJETA ELECTRÓNICA]
         [/ SAVECRED]
         [[/ DELETE] |  [/ PERSISTENTE: {SÍ |  NO}]]

 NET USE {devicename |  *} [contraseña |  *] /CASA

 USO NETO [/ PERSISTENTE: {SÍ |  NO}]

Puedes usar JCIFS

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

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

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

Ambas opciones son puramente Java y multiplataforma.

Creo que la manera más fácil es usar el método Runtime.getRuntime () .exec () y llamar al comando “net use”.

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) { }