1. 从一次文件共享失败说起:为什么“0x80070035”成了拦路虎?
那天下午,同事在隔壁工位喊我,说想从我电脑上拷贝一个设计文件,我心想这还不简单,直接开个共享文件夹给他不就行了。结果,我熟练地在文件夹属性里勾选了“共享”,他那边输入我的电脑名,弹出来的不是熟悉的文件列表,而是一个冷冰冰的错误窗口:“\计算机名 无法访问。你可能没有权限使用网络资源。请与这台服务器的管理员联系以查明你是否有访问权限。找不到网络路径。错误代码:0x80070035”。
这个“0x80070035”错误,相信很多用过Windows网络共享的朋友都见过。它就像一个守门员,把试图访问共享资源的用户挡在门外。表面上看是“找不到网络路径”,但背后的原因可能五花八门:从最基本的网络连通性,到复杂的Windows服务状态、防火墙规则、用户权限,甚至是系统组策略的某个隐蔽设置。对于普通用户,甚至是不少IT支持人员,这个错误都足够让人头疼一阵子。
网络共享,这个从Windows 95时代就存在的功能,至今仍然是局域网内文件传输、打印机共享、团队协作最基础、最核心的组件之一。它不像云盘那样需要互联网,也不像U盘那样需要物理介质,在稳定的内网环境中,它的速度和便捷性是无可替代的。然而,正是因为它深度集成在操作系统底层,涉及网络协议(SMB)、身份验证、访问控制列表(ACL)等多个层面,一旦出现问题,排查起来就像是在解一个多层的谜题。
本文将从一个资深运维的角度,带你彻底拆解Windows网络共享的设置与排错。我们不会停留在“点这里、勾那里”的表面操作,而是会深入每一步设置背后的原理,并针对“0x80070035”及其相关高频错误,构建一套从外到内、从简到繁的系统性排查链路。无论你是需要临时共享文件给同事的普通用户,还是负责维护公司内部文件服务器的管理员,这篇文章都能为你提供一套清晰、可复现的解决方案。
2. 网络共享的基石:正确理解与配置SMB和网络发现
在开始点击“共享”按钮之前,我们必须先理解Windows网络共享赖以运行的两大基石:SMB协议和网络发现。很多共享失败的问题,根源就在于这两块基石没有搭建牢固。
2.1 SMB协议:文件共享的“通用语言”
SMB(Server Message Block)协议,你可以把它理解为Windows网络中的“普通话”。当一台电脑(客户端)想访问另一台电脑(服务器)上的共享文件夹或打印机时,它们就必须用SMB协议来“对话”。不同版本的Windows支持不同版本的SMB协议(如SMB1.0、SMB2.0、SMB3.0),新版本在性能、安全性上都有大幅提升。
注意:由于SMB1.0协议存在严重的安全漏洞(如永恒之蓝漏洞利用的正是它),微软从Windows 10 1709版本和Windows Server 2019开始,默认已不再安装SMB1.0客户端和服务器组件。如果你的网络环境中还有非常古老的设备(如Windows XP、某些老款NAS或网络打印机)需要访问,才需要考虑手动启用SMB1.0,否则强烈建议保持其禁用状态。
如何检查与配置SMB协议?
打开“启用或关闭Windows功能”:在搜索框输入“启用或关闭Windows功能”并打开。
查看SMB设置:在列表中找到“SMB 1.0/CIFS 文件共享支持”。通常,你只需要确保其子项“SMB 1.0/CIFS 客户端”是勾选的(用于访问旧设备),而“SMB 1.0/CIFS 服务器”是取消勾选的。对于SMB 2.0/3.0,它们是系统核心组件,无法单独关闭。
使用PowerShell查询:对于高级用户,可以打开PowerShell(管理员),输入 Get-SmbServerConfiguration 命令。查看 EnableSMB1Protocol 项,应为 False;而 EnableSMB2Protocol 应为 True。
2.2 网络发现:让电脑在局域网里“看得见”
网络发现是一组设置,它允许你的计算机在网络上找到其他设备,同时也让其他设备找到你。它主要依赖以下服务:
Function Discovery Resource Publication 服务:发布计算机的资源。
SSDP Discovery 和 UPnP Device Host 服务:用于发现UPnP设备。
DNS Client 服务:解析网络名称。
Computer Browser 服务(在较新系统中重要性下降):维护网络计算机列表。
如果网络发现被关闭,即使共享设置正确,其他电脑在“网络”里也根本看不到你的计算机,自然无法访问。
正确配置网络发现与文件共享:
打开“控制面板” -> “网络和共享中心” -> 点击左侧“更改高级共享设置”。
你会看到针对不同网络配置文件(专用、来宾或公用)的设置。确保你当前连接的网络被设置为“专用网络”(在Wi-Fi或以太网属性中设置)。因为“公用网络”的共享设置默认是最严格的。
在“专用网络”配置文件中,确保以下选项被启用:
启用网络发现
启用文件和打印机共享
允许Windows管理家庭组连接(如果使用)或使用用户帐户和密码连接到其他计算机(更推荐,安全性更好)。
在“所有网络”配置文件中,建议:
启用共享以便可以访问网络的用户可以读取和写入公用文件夹中的文件(根据需求可选)。
为使用40或56位加密的设备启用文件共享(保持默认)。
关闭密码保护共享:这是一个关键选择。如果你关闭它,任何在同一局域网内的用户都可以无需密码直接访问共享(使用来宾身份)。这适用于高度信任的家庭或小型办公网络。如果需要更高的安全性,则“启用密码保护共享”,这样访问者必须输入目标计算机上一个有效的用户名和密码。
重启相关服务:配置更改后,最好在服务管理器中重启“Function Discovery Resource Publication”服务,或者直接重启计算机,使设置完全生效。
3. 防火墙与权限:构筑共享访问的双重门禁
当网络发现正常,电脑彼此可见后,访问请求就会抵达目标计算机。这时,防火墙和文件权限就像两道门禁,任何一道没通过,都会导致访问失败,并可能产生“0x80070035”或“拒绝访问”等错误。
3.1 配置防火墙,为SMB流量开绿灯
Windows防火墙默认会阻止许多入站连接以保护系统。我们必须明确告诉防火墙:允许SMB协议(即文件和打印机共享)的流量通过。
手动在防火墙中放行SMB:
打开“控制面板” -> “Windows Defender 防火墙” -> “允许应用或功能通过Windows Defender防火墙”。
点击“更改设置”(需要管理员权限),然后在列表中找到“文件和打印机共享”。
确保它对应的“专用”和“公用”复选框都被勾选。这意味着无论你的网络类型是什么,都允许SMB流量。
更进一步,你可以点击“允许其他应用”,添加“C:\Windows\System32\svchost.exe”(许多系统服务的主进程),但这通常不是必需的,因为系统已为SMB预定义了规则。
使用高级安全防火墙控制台(更精确):
在搜索框输入“高级安全Windows Defender防火墙”并打开。
点击“入站规则”,在右侧找到名称包含“文件”和“打印机共享”的规则。确保状态为“已启用”,配置文件对应“专用,公用”。
关键规则包括:
文件和打印机共享(SMB-In):核心规则,必须启用。
文件和打印机共享(回显请求 - ICMPv4-In):允许Ping,对网络连通性测试有帮助,建议启用。
实操心得:有时即使规则存在且已启用,问题依旧。一个彻底的排查方法是暂时完全关闭防火墙(在控制面板中关闭Windows Defender防火墙的“专用网络”和“公用网络”开关)进行测试。如果关闭后共享访问立刻恢复正常,那么问题100%出在防火墙规则上。此时再重新打开防火墙,并检查上述规则,或者尝试删除并重新创建相关规则。注意,测试后务必重新开启防火墙。
3.2 设置NTFS与共享权限:谁可以进来,进来能做什么
这是最复杂也最容易出错的一环。Windows对共享资源的访问控制有两层权限:
共享权限(Share Permission):控制从“网络大门”进入的访问。默认是“Everyone - 读取”。它比较粗粒度。
NTFS权限(Security Permission):控制对磁盘上具体文件夹和文件的访问。它非常精细。
最终的有效权限是这两者中最严格的交集。 也就是说,一个用户通过网络访问共享文件夹时,他既要有共享权限的允许,也要有NTFS权限的允许,才能执行相应操作。
一个经典的权限设置流程:
假设我们要共享 D:\Project 文件夹,允许局域网内同事读取和写入。
设置NTFS权限(先做这个更安全):
右键点击 D:\Project -> “属性” -> “安全”选项卡。
点击“编辑” -> “添加”。
在对象名称中输入“Everyone”(或一个具体的用户组,如“Domain Users”,在域环境中),点击“检查名称”后确定。
在权限列表中,为“Everyone”勾选“修改”权限(它包含了读取、执行、写入、删除等)。点击“应用”和“确定”。
为什么是“修改”而不是“完全控制”? “完全控制”允许用户更改权限和取得所有权,这在大多数共享场景下是不必要且危险的。“修改”权限对于日常文件协作已经足够。
设置共享权限:
在 D:\Project 的“属性”中,切换到“共享”选项卡。
点击“高级共享” -> 勾选“共享此文件夹” -> 可以修改共享名。
点击“权限”按钮。默认只有“Everyone - 读取”。我们点击“添加”,同样输入“Everyone”,然后为其勾选“更改”和“读取”权限。点击确定。
注意:共享权限的“完全控制”、“更改”、“读取”与NTFS权限的“完全控制”、“修改”、“读取”名称相似但作用域不同。为了简化,一个常见的做法是将共享权限设置为“Everyone - 完全控制”,然后通过更精细的NTFS权限来做实际控制。这样可以避免因权限交叉计算导致的意外拒绝。
排查“拒绝访问”类错误:
如果遇到权限问题,可以:
在共享文件夹的“安全”选项卡中,点击“高级” -> “有效访问” -> “选择用户”,输入访问者的用户名,查看其最终的有效权限,这是非常实用的诊断工具。
检查访问者使用的用户名和密码,是否在共享计算机上确实存在且密码正确(如果启用了密码保护共享)。
4. 系统性排错实战:手刃“0x80070035”及其家族错误
当基础配置都检查无误后,如果问题依旧,我们就需要启动系统性的排错流程。下面这个从外到内、从简单到复杂的排查链路,可以解决90%以上的网络共享问题。
4.1 第一步:基础网络连通性测试
这是所有排查的起点。如果两台电脑物理上都无法通信,谈何共享?
获取IP地址:在问题计算机上,打开命令提示符(CMD),输入 ipconfig。记下“IPv4 地址”,例如 192.168.1.100。
测试连通性:
Ping 网关:ping 192.168.1.1(假设网关是此地址)。如果不通,检查网线、Wi-Fi、路由器或交换机。
Ping 目标计算机:ping 192.168.1.200(目标计算机IP)。如果不通,检查两台电脑是否在同一网段(如都是192.168.1.x),防火墙是否禁用了ICMP(Ping)回应(可暂时关闭防火墙测试)。
使用计算机名Ping:ping ComputerName。如果不通但用IP通,说明可能是DNS或NetBIOS名称解析问题。可以尝试在 C:\Windows\System32\drivers\etc\hosts 文件中添加一条静态映射:192.168.1.200 ComputerName。
4.2 第二步:关键系统服务状态检查
网络共享依赖一系列后台服务。任何一个服务停止,都可能导致共享失败。
打开“运行”(Win+R),输入 services.msc。
确保以下服务的“启动类型”为“自动”,并且“服务状态”为“正在运行”:
Server:提供RPC支持、文件、打印及命名管道共享。
Workstation:创建和维护到远程服务器的客户端网络连接。
Computer Browser(在较新系统中可能非必需):维护网络上计算机的更新列表。
Function Discovery Resource Publication:发布计算机资源以供网络发现。
TCP/IP NetBIOS Helper:为NetBIOS over TCP/IP提供支持,对旧式网络名称解析很重要。
UPnP Device Host:允许设备被网络发现。
踩坑记录:我曾遇到一个案例,用户的所有设置都正确,但共享就是不通。最后发现是“Function Discovery Resource Publication”服务虽然显示“正在运行”,但实际上卡死了。解决方法是:先将其“停止”,然后再“启动”。有时候,简单粗暴地重启电脑也能解决这类服务状态异常的问题。
4.3 第三步:深入注册表与组策略(针对顽固问题)
如果以上步骤都无效,问题可能触及更深层的系统配置。操作注册表和组策略前,务必备份!
检查并重置NetBIOS设置:
打开“网络连接”,右键点击当前使用的网卡 -> “属性” -> 双击“Internet协议版本4(TCP/IPv4)”。
点击“高级” -> 切换到“WINS”选项卡。
确保选中“启用TCP/IP上的NetBIOS”。有时重置为默认,或先禁用再启用,可以解决一些古怪的名称解析问题。
检查网络提供程序顺序(经典排错步骤):
打开“运行”,输入 regedit。
导航到 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\NetworkProvider\Order。
查看右侧的 ProviderOrder 字符串值。正常情况下,RDPNP(远程桌面)、webclient(WebDAV)和 LanmanWorkstation(微软网络客户端)应该在其中,且 LanmanWorkstation 通常是核心。不要随意修改,但可以对比正常机器。
使用组策略编辑器(gpedit.msc,仅限Windows专业版及以上):
运行 gpedit.msc。
导航到“计算机配置” -> “Windows 设置” -> “安全设置” -> “本地策略” -> “安全选项”。
检查并确保以下策略设置正确:
网络访问:不允许SAM帐户的匿名枚举:已禁用。(允许匿名列出用户,对某些旧环境必要)。
网络访问:不允许SAM帐户和共享的匿名枚举:已禁用。
网络访问:将Everyone权限应用于匿名用户:已启用。(此设置影响较大,需根据安全要求权衡)。
网络安全:LAN管理器身份验证级别:建议设置为“发送LM和NTLM响应”或“发送NTLMv2响应\拒绝LM”。过于严格的设置(如仅NTLMv2)可能导致旧客户端无法连接。
帐户:使用空密码的本地帐户只允许进行控制台登录:已启用。这是关键! 这意味着,如果共享计算机上的某个本地用户账号密码为空,即使你启用了密码保护共享,也无法通过网络远程登录。要么为账号设置密码,要么禁用此策略(不推荐)。
4.4 第四步:高级诊断工具与命令
Windows自带了一些强大的诊断工具。
net share 命令:在CMD中运行。列出本机所有已创建的共享,包括隐藏共享(如C$)。可以确认你的共享是否被成功创建。
net use 命令:
net use * /delete /y:清除所有已缓存的网络驱动器映射和凭据,有时能解决凭据缓存错误导致的问题。
net use \\目标计算机IP\共享名 /user:用户名 密码:尝试使用指定凭据建立连接,可以精确测试身份验证是否通过。
Windows网络诊断:在文件资源管理器地址栏输入 \\目标计算机IP 出错时,有时Windows会弹出自动诊断工具,可以尝试运行,它可能会自动修复一些常见配置问题。
重置网络栈:如果怀疑是更深层的网络协议栈损坏,可以尝试在管理员CMD中依次执行:
TEXT
复制
1
netsh winsock reset
2
netsh int ip reset
3
ipconfig /release
4
ipconfig /renew
5
ipconfig /flushdns
执行后重启电脑。这是一个“大招”,会重置网络相关配置到默认状态。
5. 常见错误代码深度解析与专项解决
除了“0x80070035”,网络共享过程中还会遇到其他错误代码。理解它们,能更快定位问题。
错误代码 / 现象
可能原因
针对性解决方案
0x80070035 - 找不到网络路径
1. 网络发现/共享服务未开启。2. 防火墙阻止。3. 目标计算机离线或IP冲突。4. NetBIOS over TCP/IP 被禁用。
按本文第2、3、4章顺序系统排查,重点检查服务、防火墙和NetBIOS设置。
0x80070043 / 0x80004005 - 拒绝访问
1. NTFS/共享权限不足。2. 密码错误(密码保护共享启用时)。3. 空密码策略限制。4. 共享文件夹所在驱动器为FAT32格式(不支持NTFS权限)。
1. 检查并修正权限(见3.2)。2. 确认用户名密码。3. 检查组策略“空密码限制”。4. 将驱动器转换为NTFS格式。
0x80070040 - 指定的网络名不再可用
1. 网络连接不稳定、中断。2. 计算机进入睡眠/休眠状态。3. 服务器端服务意外停止。
1. 检查网线/Wi-Fi。2. 禁用网卡节能选项(设备管理器->网卡属性->电源管理)。3. 重启Server等服务。
“为安全考虑,已锁定该用户账户”
在多次尝试失败后,系统临时锁定了账户。
1. 等待一段时间(通常15-30分钟)自动解锁。2. 在共享计算机上,由管理员在“本地安全策略”->“账户锁定策略”中调整或解锁。
能Ping通IP,但无法通过计算机名访问
DNS或NetBIOS名称解析失败。
1. 尝试使用IP地址访问(\\192.168.1.xxx)。2. 检查hosts文件,或在内网路由器/DHCP服务器上配置正确的DNS。
访问时提示“Windows无法访问\...\共享”
这是一个泛错误,可能包含上述任何原因。
点击“详细信息”查看具体错误代码,再对照上表处理。
6. 特殊场景与进阶配置考量
6.1 跨版本Windows共享(如Win11访问Win7)
高版本Windows(如Win10/11)访问低版本(如Win7/XP)通常问题不大。但反过来,低版本访问高版本时,可能因为高版本默认禁用SMB1.0或使用更严格的身份验证级别而失败。
解决方案:在高版本电脑上,酌情启用SMB1.0客户端(仅客户端),并调整“LAN管理器身份验证级别”组策略为“发送LM和NTLM响应”。
6.2 家庭组(HomeGroup)已弃用后的替代方案
从Windows 10 1803开始,家庭组功能已被移除。现在更依赖标准的“网络发现”和“密码保护共享”机制。按照第2章配置“专用网络”和网络发现即可。
6.3 使用“Everyone”与特定用户/用户组的权衡
使用Everyone:最简单,局域网内所有设备都能看见并尝试访问。在关闭密码保护共享时,可直接进入。适合完全信任的简单环境。
使用特定用户/用户组:更安全。你需要在共享计算机上为需要访问的同事创建本地用户账户(或使用微软账户),并只为这些账户分配权限。访问时需输入指定账户的密码。适合对安全性有要求的办公环境。
6.4 映射网络驱动器的技巧与故障排除
将共享文件夹映射为本地驱动器盘符(如Z:)可以方便访问。
命令:net use Z: \\计算机名\共享名 /persistent:yes。/persistent:yes 表示重启后自动重连。
常见问题:映射时提示“找不到网络路径”或“拒绝访问”,其排查方法与直接访问共享完全一致。此外,检查是否之前有残留的映射(net use 查看),可以用 net use Z: /delete 删除后重试。
凭据管理器:如果总是弹出登录框,可以打开“控制面板” -> “凭据管理器” -> “Windows凭据”,添加一条“Windows凭据”,地址填写目标计算机名或IP,用户名密码填写共享计算机上的有效账户。这样系统会自动使用这些凭据进行连接。
网络共享的配置与排错,是一个典型的“细节决定成败”的任务。它要求我们不仅要知道如何点击设置,更要理解其背后网络协议、系统服务和安全策略是如何协同工作的。从确保最底层的物理网络连通,到配置正确的防火墙规则,再到精细地调和共享权限与NTFS权限,最后用系统性的命令和工具诊断那些棘手的错误代码——这套组合拳打下来,绝大多数共享问题都能迎刃而解。
我个人在多年的运维中最大的体会是:遇到共享问题,切忌毫无头绪地东改西改。 最好的方法是建立一套自己的排查清单,按照从外到内、从简单到复杂的顺序(例如:网络连通性 -> 基础服务与发现 -> 防火墙 -> 权限 -> 深层策略/注册表),一步步验证和排除。这样既能提高效率,也能加深对整个机制的理解。下次当“0x80070035”再次出现时,你就能从容地告诉同事:“别急,我知道问题大概出在哪儿了。”