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