문제

우리는 문자로 공유 드라이브에 액세스하는 일부 레거시 코드 (f : )로 작업하고 있습니다. UNC 표기법을 사용하는 것은 옵션이 아닙니다. Java Wrapper 앱은 서비스로 실행되며 첫 번째 단계로 코드에 드라이브를 명시 적으로 매핑하고 싶습니다. 누구든지 이것을 한 사람이 있습니까?

도움이 되었습니까?

해결책

다음 코드에서와 같이 네트워크 드라이브를 맵핑하는 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}]

다른 팁

JCIF를 사용할 수 있습니다

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