You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#使用SMB2Client连接Samba后无法打开共享文件夹及访问子目录

问题根因

你的代码存在两个核心逻辑问题,导致资源管理器无法正常弹出、共享目录及子路径访问失败:

  • 你使用的第三方SMB2Client库维护的是独立于Windows原生SMB组件的连接会话,库内完成的登录认证不会同步给资源管理器依赖的系统SMB客户端,资源管理器访问路径时无有效凭据,会直接静默失败或被服务端拦截权限。
  • 启动资源管理器的Process.Start是异步调用,方法返回时资源管理器尚未完成路径初始化,且你未提前给系统层注入对应SMB凭据,直接导致窗口不弹出、子目录无访问权限。
  • 代码存在冗余嵌套大括号的语法问题,虽不影响运行但建议清理。
修复方案

核心逻辑是先通过Windows系统命令建立原生SMB认证会话,再调用资源管理器打开路径,不要依赖第三方SMB库的连接给系统传递凭据。
修正后的可运行代码如下:

using System.Diagnostics;
using System.Net;
using SMBLibrary;
using System.Collections.Generic;

SMB2Client client = new SMB2Client();
bool isConnected = client.Connect(IPAddress.Parse("192.168.1.169"), SMBTransportType.DirectTCPTransport);
if (isConnected)
{
    NTStatus status = client.Login(string.Empty, "mint", "test12345");
    if (status == NTStatus.STATUS_SUCCESS)
    {
        List<ShareInfo> shares = client.ListShares(out status);
        // 清除同地址残留的旧SMB会话,避免凭据冲突
        Process.Start(new ProcessStartInfo("net.exe", @"use \\192.168.1.169 /delete /y")
        {
            CreateNoWindow = true,
            UseShellExecute = false
        }).WaitForExit();
        
        // 注入凭据建立系统级SMB会话,会话不持久化留存
        ProcessStartInfo authCmd = new ProcessStartInfo("net.exe", 
            @"use \\192.168.1.169 test12345 /user:mint /persistent:no")
        {
            CreateNoWindow = true,
            UseShellExecute = false
        };
        Process.Start(authCmd).WaitForExit();

        // 强制资源管理器开新窗口跳转到指定共享路径
        Process.Start("explorer.exe", $"/n,/e,\"{@"\\192.168.1.169\sambashare"}\"");
        
        // 第三方库连接可正常关闭,不影响系统已建立的SMB会话
        client.Logoff();
    }
    client.Disconnect();
    Console.ReadKey();
}
补充说明
  • 若不需要长期保留访问凭据,可在资源管理器使用完成后调用net use \\192.168.1.169 /delete /y清除系统留存的SMB认证信息,避免安全风险。
  • 子目录访问失败的本质是资源管理器默认以匿名身份访问Samba服务,被服务端权限规则拦截,注入正确凭据后权限与你第三方库登录的账号权限完全一致,可正常浏览所有授权目录。
  • 若仍出现窗口不跳转问题,可检查Samba服务端是否启用SMB2及以上协议,Windows 10/11默认禁用SMB1协议,低版本协议配置会导致访问失败。

内容的提问来源于stack exchange,提问作者Pratiksha Pansara

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 17:06:25