Frage

Wir arbeiten mit einigem Legacy-Code, der ein gemeinsam genutzten Laufwerk durch den Buchstaben greift (f: \ zum Beispiel). die UNC-Notation ist keine Option. Unsere Java-Wrapper App wird als Dienst ausgeführt, und als ersten Schritt, würde Ich mag das Laufwerk explizit im Code abzubilden. Hat jemand dies getan?

War es hilfreich?

Lösung

Betrachten Sie den DOS-Befehl ausführt, der ein Netzwerklaufwerk, wie im folgenden Code-Karten:

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

Siehe Details auf Befehl 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}]

Andere Tipps

Sie können mit JCIFS

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

oder wenn Sie wollen höhere Level-API und Unterstützung für andere Protokolle wie FTP, ZIP und andere:

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

Beide Optionen sind reine Java und Cross-Plattform.

Ich denke, der einfachste Weg, um die Runtime.getRuntime zu verwenden ist (). Exec () -Methode und rufen Sie den "net use" -Befehl.

Zum Beispiel:

    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) {
    }
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top