0

我在打印属于 Windows VM 中特定子文件夹的所有文件时遇到问题。

概述:

我有一个 IP 地址为10.162.12.12的 windows 虚拟机

我想打印C:\MyFolder\MySubFolder下存在的所有文件名

目前 'MySubFolder' 包含 4 个 cmd 文件,即a.cmd、b.cmd、c.cmd、d.cmd

 try (Connection connection = client.connect("10.162.x.x")) {

        AuthenticationContext ac = new AuthenticationContext("userName", "pwd".toCharArray(), "domainName");
        Session session = connection.authenticate(ac);

        // Connect to Share
        try (DiskShare share = (DiskShare) session.connectShare("MyFolder")) {
            for (FileIdBothDirectoryInformation f : share.list("/MySubFolder")) {
                System.out.println("File : " + f.getFileName());
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

我不确定如何传递我的“C”驱动器信息和路径,即传递路径的位置。目前我收到以下错误:

15:48:17.991 INFO chsmbj.connection.Connection - 成功连接到:10.162.12.12 15:48:18.826 INFO chsmbj.connection.Connection - 在 10.162.12.12 上成功验证了用户名,会话为 140737488355349 15:48:18.826 INFO com。 hierynomus.smbj.session.Session - 连接到会话 140737488355349 上的 \10.162.12.12\MyFolder 15:48:19.357 INFO com.hierynomus.smbj.session.Session - 从主机 10.162.12.12 com.hierynomus 注销会话 140737488355349。 SMBApiException:STATUS_BAD_NETWORK_NAME (0xc00000cc):无法连接到 com.hierynomus.smbj.session.Session.connectTree(Session.java:173) 的 com.hierynomus.smbj.session.Session.connectShare(Session. java:144) 在 com.olf.agon.smbj.SMBFile3Trail.main(SMBFile3Trail.java:36)

我只想知道如何将值传递给我的 connectionShare() 方法和 list() 方法,以便能够连接到“\10.162.12.12\C\MyFolder”。

4

1 回答 1

1

我能够解决这个问题:

SmbConfig smbConfig = SmbConfig
            .builder()
            .withMultiProtocolNegotiate(true)
            .withTransportLayerFactory(new AsyncDirectTcpTransportFactory<>())
            .withSigningRequired(true).build();

    final String SHARE_NAME = "C$";

    final String LOCAL_PATH = "MyFolder/MySubFolder";

    SMBClient client = new SMBClient(smbConfig);

    try (Connection connection = client.connect("10.162.12.12")) {

        AuthenticationContext ac = new AuthenticationContext("userName", "pwd".toCharArray(), "domainName");
        Session session = connection.authenticate(ac);

        // Connect to Share
        try (DiskShare share = (DiskShare) session.connectShare(SHARE_NAME)) {
            for (FileIdBothDirectoryInformation f : share.list(LOCAL_PATH)) {
                System.out.println("File : " + f.getFileName());
            }
        } catch (Exception e) {
            e.printStackTrace();
        }


    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        client.close();
    }
于 2018-11-02T13:02:45.113 回答