JavaでWindowsドライブをマウントするにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/208839

  •  03-07-2019
  •  | 
  •  

質問

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

役に立ちましたか?

解決

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

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

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

他のヒント

JCIFSを使用できます

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

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

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

両方のオプションは、純粋なJavaとクロスプラットフォームです。

最も簡単な方法は、Runtime.getRuntime()。exec()メソッドを使用して" net use"を呼び出すことですコマンド。

例:

    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) {
    }
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top