2008-10-16 16 views
11

Paylaşılan bir sürücüye mektupla erişen bazı eski kodlarla çalışıyoruz (örneğin f: \). UNC gösterimini kullanmak bir seçenek değildir. Java sarıcı uygulamamız bir hizmet olarak çalışacak ve ilk adım olarak, sürücüyü açıkça kodda eşlemek istiyorum. Bunu yapan var mı?Java'da bir Windows sürücüsünü nasıl monte edebilirim?

+0

Eğer bu 'kullanıcılar' içinse, bir veya iki usb aygıtı takılı halde bulunamayan alfabenin sonuna doğru bir harf seçmeyi düşünün. – Cheekysoft

+0

Bu iyi bir tavsiye. USB cihazları ilk kullanılabilir. Bizim durumumuzda, seçim mektubu kontrolümüz dışında. Sadece haritalandırılmalıyız. –

cevap

15

aşağıdaki kodda olduğu gibi, bir ağ sürücüsüne harita DOS komut yürütülürken düşünün:

 
The syntax of this command is: 


NET USE 
[devicename | *] [\\computername\sharename[\volume] [password | *]] 
     [/USER:[domainname\]username] 
     [/USER:[dotted domain name\]username] 
     [/USER:[[email protected] domain name] 
     [/SMARTCARD] 
     [/SAVECRED] 
     [[/DELETE] | [/PERSISTENT:{YES | NO}]] 

NET USE {devicename | *} [password | *] /HOME 

NET USE [/PERSISTENT:{YES | NO}] 
+0

Kullanıcı zaten f eşlenmişse ne olur? Aynı programı birkaç kez çalıştırıp ortada (ör. Hata ayıklama oturumu sırasında) öldürürsek ne olur? – ddimitrov

+0

Kullanıcı daha önce f sürücüsünü eşleştirdiyse: "Sistem hatası 85 oluştu." işlem çıkışında. Sadece tarayabilirsiniz. –

4

En kolay yol Runtime.getRuntime(). Exec() yöntemini kullanmak ve "net use" komutunu çağırmak olduğunu düşünüyorum. Örneğin

:

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) { 
    } 
+0

Doğrudan net.exe'nin kullanılması hata durumlarını işlemez ve platform nötr değildir. – munsingh

9
:

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

net use komutu ilgili ayrıntılara bakın

JCIFS

'u kullanabilirsiniz. FTP, Posta ve diğerleri gibi diğer protokoller için üst düzey API ve destek istiyorum

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

ya:

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

Her iki seçenek Java ve çapraz platform saftır.

İlgili konular