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

Windows服务跨机访问文件共享报“目录名称无效”问题求助

解决Windows服务跨机文件共享同步时的“目录名称无效”错误

问题背景

开发的Windows服务用于本地文件夹与跨机文件共享(fileshare)同步,本地共享场景运行正常,但跨机部署共享文件夹后抛出“目录名称无效”错误,手动通过快捷方式访问跨机共享无异常。相关代码片段如下:

private readonly string _localFolderPath = @"C:\Users\vernenat\OneDrive\Desktop\localfolder";
private readonly string _fileSharePath = @"\\MyComputerName\fileshare";
private readonly string _logFolderPath = @"C:\Users\vernenat\OneDrive\Desktop\logfolder";

private readonly FileSystemWatcher _localWatcher = new FileSystemWatcher();
private readonly FileSystemWatcher _fileShareWatcher = new FileSystemWatcher();

private static object logFileLock = new object();
public Service1()
{
    InitializeComponent();
}

[OperationBehavior(Impersonation = ImpersonationOption.Required)]

protected override void OnStart(string[] args)
{
    try
    {
        WriteToLogs($"{DateTime.Now.ToString("dd-MM-yyyy HH:mm:ss.fff")} Service was started");

        WriteToLogs($"{DateTime.Now.ToString("dd-MM-yyyy HH:mm:ss.fff")} Setting up local folder watcher");

        _localWatcher.Path = _localFolderPath;
        _localWatcher.IncludeSubdirectories = true;
        _localWatcher.EnableRaisingEvents = true;
        _localWatcher.Created += OnChangedLocal;

        WriteToLogs($"{DateTime.Now.ToString("dd-MM-yyyy HH:mm:ss.fff")} Setting up file share folder watcher");

        _fileShareWatcher.Path = _fileSharePath;
        _fileShareWatcher.IncludeSubdirectories = true;
        _fileShareWatcher.EnableRaisingEvents = true;

        SyncFilesFromLocal();
        SyncFilesFromFileshare();
    }
    catch (Exception ex)
    {
        WriteToLogs(ex.ToString());
    }
}

解决建议

  • 修改服务运行账户:Windows服务默认使用Local System账户,该账户无网络资源访问权限。需将服务切换到有权限访问目标共享的账户:

    1. 打开services.msc找到目标服务,右键选择「属性」
    2. 切换到「登录」选项卡,选择「此账户」,输入具备共享文件夹读写权限的域/本地账户
    3. 输入账户密码后保存,重启服务
  • 验证共享路径与权限:

    • 确认_fileSharePath中的主机名/IP可被本地机器解析(用ping MyComputerName测试),替换为IP地址可避免DNS解析问题
    • 检查目标共享文件夹的共享权限和NTFS权限,确保服务运行账户拥有读写权限
  • 替换OneDrive路径:代码中本地目录和日志目录使用OneDrive路径,Local System账户无法访问OneDrive的同步目录,建议更换为普通本地路径(如C:\localfolder)

  • 检查SMB相关服务:跨机共享依赖SMB协议,确认目标机器已启动Server服务(服务器端)或Workstation服务(客户端)

内容的提问来源于stack exchange,提问作者Nataly Verner

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 20:01:16