Pergunta

Estamos trabalhando com algum código legado que acessa uma unidade compartilhada pela letra (f: \, por exemplo). Usando a notação UNC não é uma opção. Nossa Java aplicativo invólucro será executado como um serviço, e como o primeiro passo, eu gostaria de mapear a unidade explicitamente no código. Alguém já fez isso?

Foi útil?

Solução

Considere executar o comando DOS que mapeia uma unidade de rede, como no código a seguir:

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

Veja mais detalhes sobre o comando 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}]

Outras dicas

Você pode usar JCIFS

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

ou se você quiser mais elevado API e suporte para outros protocolos como FTP nível, Zip e outros:

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

Ambas as opções são plataforma Java e cross puro.

Eu acho que a maneira mais fácil é usar o Runtime.getRuntime (). Método exec () e chamar o comando "net use".

Por exemplo:

    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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top