JavaでWindowsドライブをマウントするにはどうすればよいですか?
-
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) {
}
所属していません StackOverflow