Question

Nous travaillons avec un code hérité qui accède à un lecteur partagé par la lettre (f: \ par exemple). L'utilisation de la notation UNC n'est pas une option. Notre application d'encapsulation Java s'exécutera en tant que service et, dans un premier temps, j'aimerais mapper explicitement le lecteur dans le code. Quelqu'un l'a-t-il fait?

Était-ce utile?

La solution

Pensez à exécuter la commande DOS qui mappe un lecteur réseau comme dans le code suivant:

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

Voir les détails sur la commande net use:

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}]

Autres conseils

Vous pouvez utiliser JCIFS

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

ou si vous souhaitez une API de niveau supérieur et une prise en charge d'autres protocoles tels que FTP, Zip et autres:

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

Les deux options sont Java pur et multiplateformes.

Je pense que le moyen le plus simple consiste à utiliser la méthode Runtime.getRuntime (). exec () et à appeler le paramètre "net use". commande.

Par exemple:

    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) {
    }
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top