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

3

代码:

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()时,所有的驱动器都会列出。但是当我使用服务启动服务器时,网络驱动器不会被列出。
如何始终列出我的网络驱动器?我读到我可以在服务中映射网络驱动器,但这不是一个选项。驱动器已经存在,我无权更改任何内容。
1个回答

7
映射的驱动器是针对用户的(可能在登录时映射),而不是针对计算机的。因此,当用户A登录时,驱动器被映射。当您以不同的用户身份启动程序(即作为管理员或作为以SYSTEM运行的服务)时,映射的驱动器不可用,因此无法访问它们。您的选择是:
  • 将驱动器重新映射为新用户(即服务)
  • 在当前用户的上下文中运行应用程序
  • 通过UNC路径访问所需的文件(即使用 \\server\shared_folder\blah 代替 s:\ blah

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接