14

文字 (f:\ など) で共有ドライブにアクセスするレガシー コードを使用しています。UNC 表記の使用はオプションではありません。私たちの Java ラッパー アプリはサービスとして実行されます。最初のステップとして、コードでドライブを明示的にマップしたいと思います。誰かがこれをしましたか?

4

3 に答える 3

16

次のコードのように、ネットワークドライブをマップするDOSコマンドを実行することを検討してください。

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

netuseコマンドの詳細を参照してください。

このコマンドの構文は次のとおりです。


NET USE
[デバイス名| *] [\\ computername \ sharename [\ volume] [password | *]]
        [/ USER:[ドメイン名\]ユーザー名]
        [/ USER:[点線のドメイン名\]ユーザー名]
        [/ USER:[username @ dotted domain name]
        [/スマートカード]
        [/ SAVECRED]
        [[/ DELETE] | [/永続的:{はい| いいえ}]]

NETUSE{デバイス名| *}[パスワード| *] /家

NET USE [/ PERSISTENT:{YES | いいえ}]
于 2008-10-16T14:51:30.897 に答える
11

JCIFSを使用できます

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

または、高レベルの API と、FTP、Zip などの他のプロトコルのサポートが必要な場合:

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

どちらのオプションも純粋な Java とクロス プラットフォームです。

于 2008-10-16T14:55:27.050 に答える
5

最も簡単な方法は、Runtime.getRuntime()。exec()メソッドを使用して、「netuse」コマンドを呼び出すことだと思います。

例えば:

    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) {
    }
于 2008-10-16T14:48:11.060 に答える