Windows:使用File.listRoots显示映射的networking驱动器

码:

import java.io.*; public class TestFileRoots { public static void main(String[] args) { for(File f : File.listRoots()){ System.out.println(f.getAbsolutePath()); } } } 

当我启动cmd并运行这个类时,我所有的驱动器都被列出来了。 当我以pipe理员身份启动cmd并运行此操作时,我的映射networking驱动器未列出。

另外,当我手动启动我的服务器并调用File.listRoots()时,我所有的驱动器都被列出。 但是,当我使用服务启动服务器时,networking驱动器未列出。

我如何总是列出我的networking驱动器? 我读了我可以映射networking驱动器内的服务,但这不是一个选项。 驱动器已经在那里,我不能改变一些事情。

Solutions Collecting From Web of "Windows:使用File.listRoots显示映射的networking驱动器"

映射的驱动器是用户特定的(可能在登录时映射),而不是计算机特定的。 所以,当userA登录驱动器映射。 当您以不同的用户身份启动程序时(例如,以管理员身份或以SYSTEM身份运行的服务),映射的驱动器不可用,因此您无法访问它们。 您的选择是:

  • 将驱动器重新映射为新用户(即服务)
  • 在当前用户的上下文中运行您的应用程序
  • 通过UNC路径访问您需要的文件(即,而不是s:\blah use \\server\shared_folder\blah