【问题标题】:Windows: Display mapped network drives with File.listRootsWindows:使用 File.listRoots 显示映射的网络驱动器
【发布时间】:2014-03-06 16:38:35
【问题描述】:

代码:

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() 时,我的所有驱动器都会列出。但是当我使用服务启动服务器时,没有列出网络驱动器。

如何始终列出我的网络驱动器?我读到我可以在服务中映射网络驱动器,但这不是一个选项。驱动器已经存在,我不能对其进行更改。

【问题讨论】:

    标签: java windows filesystems


    【解决方案1】:

    映射的驱动器是特定于用户的(可能在登录期间映射)而不是特定于计算机。因此,当驱动器上的userA 日志被映射时。当您以其他用户身份启动程序时(即以管理员身份或以 SYSTEM 身份运行的服务),映射的驱动器不可用,因此您无法访问它们。您的选择是:

    • 以新用户(即服务)身份再次映射驱动器
    • 在当前用户的上下文中运行您的应用程序
    • 通过 UNC 路径访问您需要的文件(即,使用 \\server\shared_folder\blah 代替 s:\blah

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多