2014-03-06 56 views
2

代碼:視窗:顯示映射網絡驅動器與File.listRoots

import java.io.*; 

public class TestFileRoots { 

    public static void main(String[] args) { 
     for(File f : File.listRoots()){ 
      System.out.println(f.getAbsolutePath()); 
     } 
    } 

} 

當我開始CMD和運行這個類,我所有的驅動器都列。當我以管理員身份啓動cmd並運行此操作時,我的映射網絡驅動器未列出。

此外,當我手動啓動我的服務器並調用File.listRoots()時,我的所有驅動器都會列出。但是,當我使用服務啓動服務器時,網絡驅動器未列出。

如何始終列出我的網絡驅動器?我讀過我可以映射服務內的網絡驅動器,但這不是一個選項。驅動器已經在那裏,我不能改變它的一些事情。

回答

6

映射的驅動器是用戶特定的(可能在登錄過程中映射)而不是計算機特定的。所以,當userA登錄驅動器映射。當您以不同的用戶身份啓動程序(即以管理員身份或以SYSTEM身份運行的服務)時,映射的驅動器不可用,因此您無法訪問它們。您的選項是:

  • 爲新用戶再次映射驅動器(即服務)
  • 運行你的當前用戶的上下文
  • 訪問文件(應用程序需要通過UNC路徑,即代替s:\blah使用\\server\shared_folder\blah
相關問題