风驰汽摩俱乐部

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 40|回复: 1

全网最详细讲解Windows网上邻居局域网文件共享的实现方法

[复制链接]
发表于 2025-10-14 15:52:01 | 显示全部楼层 |阅读模式

网上邻居,是旧版本Windows的称呼,在win10系统中,叫作“网络”。它基于SMB协议,可以实现局域网内电脑,手机,PAD之间的文件共享,可以直接读取和修改其它电脑里的文件,可以把文件从其它电脑复制到你的电脑,可以把你电脑内的文件复制到其它电脑,甚至可以把其它电脑的文件复制到其它电脑(取决于权限设置)。

如果你的桌面上没有“网络”,可以在桌面上右键,个性化,主题,桌面图标设置,勾选“网络”,应用,确定。以下依然称这个功能为网上邻居。

在默认状态,即win10刚刚安装完成时,没有开启SMB1.0客户端和服务端功能,没有开启WSD资源发布功能,所以在网上邻居里,只能查看到以WSD发现方式的设备,例如一些NAS。Windows系统的电脑互相不能发现。

遗憾的是,网上邻居很早之前就被微软弃用了。这是因为SMB1.0协议存在安全性问题,而网上邻居需要computer browser服务,这个服务依托于SMB1.0功能,所以网上邻居默认不能使用。在受信任的局域网内,例如自己家,小公司或某部门的内网,若可以无视安全问题,网上邻居可以方便的浏览局域网内的电脑。

微软的建议是,资源管理器(此电脑)手动输入\\IP地址 或 \\计算机名 ,或添加网络位置,或映射网络驱动器的方式实现文件共享。如果不嫌麻烦,可以这样使用,但依然需要开启网络发现和文件打印机共享,方法后面会说。

如果希望使用输入IP地址的方式访问,可以在路由器DHCP服务器设置固定设备的IP地址。



以华硕路由器为例

值得注意的是,网上邻居有一个问题:有些时候,某台电脑无法找到另一台电脑。如果你有一台华硕路由器或威联通的NAS(群晖应该也可以吧),这个问题是可以解决的。如果没有,也有一个比较麻烦的方法解决。

下面讲一下开启网上邻居浏览电脑列表,实现局域网文件共享的方法。

0 准备工作。保证准备使用网上邻居的电脑的账户都有密码,也就是你的电脑开机之后,不是直接进入桌面,而是需要你输入一个密码才能进入桌面。如果没有密码,会遇到权限问题,需要额外的操作才能解决。建议设置一个密码。后面会讲没有密码需要怎样操作。

修改计算机名和工作组。

修改计算机名和工作组

右键此电脑,属性,重命名这台电脑,高级。输入计算机名,方便你准确识别这台电脑。下面选择工作组,默认是WORKGROUP,可保持默认。如果想不同电脑加入不同工作组,可以手动设置工作组的名称。确定后需要重启。

1 开启SMB1.0客户端和服务端



SMB1.0

控制面板,程序和功能,启用或关闭Windows功能,找到SMB1.0/CIFS文件共享支持,勾选前两项,客户端和服务端。自动删除不要勾选,否则过几天你的SMB1.0就自动关闭了。确定,需要重启。

2 开启WSD支持



WSD

局域网内的电脑有两种发现方式,NetBIOS(SMB1.0)和WSD。

https://learn.microsoft.com/en-us/windows-server/storage/file-server/troubleshoot/smbv1-not-installed-by-default-in-windows

前面讲了开启SMB1.0的方法,这里讲的是开启wsd支持的方法,引用至上面微软官方文档。

控制面板,管理工具,服务,找到 "Function Discovery Provider Host" 和 "Function Discovery Resource Publication",都设置为 自动(延迟启动),再启动这两个服务。

延迟启动是开机后2分钟启动。自动是开机时立即启动。手动是需要用到它的时候启动。禁用是永远不能启动。

前者默认是可以运行的,所以完全默认状态下网上邻居可以找到wsd方式发现的设备。后者没有启动,所以Windows电脑没有以wsd方式通知局域网内的其它电脑。



启动服务



一些相关服务

和网上邻居相关的服务有这些:

Computer Browser,Function Discovery Provider Host,Function Discovery Resource Publication,SSDP Discovery,TCP/IP NetBIOS Helper,UPnP Device Host。

这里面只需要修改第二个和第三个为 自动(延迟启动)即可。其它的保持默认,不需要修改,只要确保它们不是禁用状态。

顺便说一句,网卡的NetBIOS设置维持默认即可,不要禁用。



网卡设置

3 开启网络发现,文件和打印机共享

右键任务栏的网络图标,打开网络和internet设置,选择以太网或你使用的WiFi,选择专用。



专用

上一页,左侧选择状态,网络和共享中心,更改高级共享设置,启用网络发现,启用网络连接设备的自动设置,启用网络和打印机共享。



网络发现,文件和打印机共享

4 创建一个共享文件夹,设置权限。

在硬盘中创建一个文件夹,右键,属性,共享,高级共享,共享此文件夹,应用,确定。



高级共享

共享,可以在这里设置不同账户的权限。例如你电脑里有另一个账户,你可以在下拉列表里添加它,设置为只读。这样其它电脑访问这台电脑的时候可以使用该账户,只有只读权限。也可以用所有者(管理员)账户访问,可读可写。



权限设置

至此,网上邻居已经处于可用状态。将电脑A和B都按上述操作设置,A双击桌面上的网络,应该可以看到计算机B,B同样可以看到A。双击目标电脑,输入它的账户密码,即可访问它的共享文件夹。

同样的,移动设备也可以访问共享文件夹。例如iPhone的文件app,nplayer,都可以使用SMB协议访问这些电脑。

如果某台电脑的打印机设置了共享,在网上邻居进入该电脑,双击打印机,即可连接成功。之后使用各种软件,如word,在打印选项里选择网络打印机即可。



共享打印机的方法(引用我另一篇文章)

但还有两个重要问题没有解决。

1 有时某台电脑无法看到另一台电脑。

这就要说一下我这段时间的研究发现。

同时开启SMB1.0和WSD的电脑,如果使用网线连接(开机时有网),会默认使用NetBIOS方式发现。如果开机后插上网线或连接WiFi,会默认使用WSD方式发现。

WSD是没问题的,但你不可能每次关机拔网线,开机插网线。网线的卡扣捏几十次就可能断了,也很麻烦。

NetBIOS发现方式导致电脑失踪的原因是这样的。在工作组内没有WINS服务器时(通常是没有的,WINS也是被微软遗弃的),局域网内的电脑大概每15分钟会互相沟通,进行一次选举。根据系统版本,SMB版本,设置的优先级等因素,选举一台电脑作为 主浏览器(Master Browser),用来存放局域网内的计算机名单(计算机名和IP对应关系)。其它电脑开机时,会与主浏览器通信,将自己加入到名单,这样其它电脑就可以发现它。问题在于选举是周期性进行的,主浏览器可能改变,不只是主浏览器电脑关机,有其它高优先级的电脑开机,也会导致主浏览器变化。这时候其它电脑更新名单就可能出现延迟甚至错误,导致新开机的电脑不能被及时发现。

解决方法有两种。

一是找一个局域网内永远开机的设备,可以是路由器,可以是NAS,把它设置为主浏览器。这会修改SMB功能的优先级,使其每次选举时都会获胜,成为工作组的主浏览器。严谨一点,设置为主浏览器其实不代表每次都赢,如果你给两个或以上的设备都设置主浏览器,它们还是会竞争,会有一个赢的。所以一定只设置一个设备为主浏览器。

以威联通NAS为例。

控制台,WIN/MAC/NFS/WebDAV,高级设置。



威联通NAS

勾选 网域主浏览器。它的英文是Local Master Browser,我查了各个语言的说明书,根据描述,指的应该是本地主浏览器。事实上网域主浏览器和本地主浏览器不是一个东西。一个工作组有一个主浏览器,被称作本地主浏览器。一个内网可以有多个工作组。这些本地主浏览器会选举一个,作为网域主浏览器,用来沟通各个工作组的计算机名单。你可以看到网上邻居里是可以发现不同工作组的电脑的。

启用WS-Discovery,即WSD支持,这个默认是勾上的。

华硕路由器在这里设置,我这个是梅林固件,我不知道官方固件有没有这个选项。



华硕路由器

Force as Master Browser选择是。路由器USB口不接磁盘的话,路由器的samba似乎是不工作的,网上邻居里看不到路由器设备。我没有测试不接磁盘,这个选项有没有用。如果你想用路由器作为主浏览器,或许需要给USB口接一个磁盘。建议是带供电的硬盘盒+硬盘。不带供电的设备有极高概率在你强制关闭路由器,或者停电的时候,数据全部消失。其实台式机突然断电也可能导致硬盘数据丢失,只是台式机电源有一定的保持时间(intel标准是17ms以上),这种情况发生的概率低。

如何确认工作组内的主浏览器?



nbtstat

管理员权限运行powershell,输入nbtstat /A IP地址。IP地址是你要验证的设备。/a接目标的计算机名也可以。也就是大写A接IP,小写a接计算机名。如果它是主浏览器,你会看到MSBROWSER标签。对于那些十六进制数,在这个网站可以查到含义。

https://learn.microsoft.com/en-us/previous-versions/windows/it-pro/windows-2000-server/cc961857(v=technet.10)?redirectedfrom=MSDN

nbtstat介绍:

https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/nbtstat

另一种方法是,一旦遇到哪台电脑不可见了,就去重启那台电脑的Function Discovery Provider Host服务。右键这个服务,重新启动,它会提示连带着下面那个服务一起重启。重启后,这台电脑会以WSD方式通知局域网内的其它电脑。

2024.7.31更新:

在同时开启SMB1.0和WSD时,连接网线的电脑,通常是NetBIOS发现方式;开机没有网,需要手动连接WiFi,或开机进入桌面后插网线的电脑,通常是WSD发现方式。如果不开SMB1.0,仅使用WSD,连接网线的电脑不会被其它电脑发现。

这是Function Discovery Resource Publication服务的bug。在2019年左右,这个服务被添加了一个触发器启动。通过sc.exe qtriggerinfo fdrespub指令查看触发器信息,可以看到当网络配置文件被切换到 专用 时,会启动这个服务。



触发器信息

这个服务被设置为 自动(延迟启动)+触发器启动时,任意触发一个条件就会启动。延迟启动是开机后2分钟启动,触发器是达到触发器条件启动。不插网线时,开机没有网,所有网络适配器都是没启动的,也就没有配置文件:专用。这时候,无论你等待3分钟,还是直接连接WiFi或网线,都会启动Function Discovery Resource Publication,这会将这台电脑在线的信息发布到局域网。这样是没有任何问题的。

但插网线的时候,开机过程中就有配置文件:专用,这个服务会过早的启动。当服务启动早于网络可用(例如通过DHCP获取可用的内网IP),就会出现bug。现象是服务启动了,但是这台电脑永远不会被发布到局域网,其它电脑也就看不到它。它自己也看不到自己,但能看到别的电脑。此时手动重启Function Discovery Resource Publication服务可以恢复。上面的不用重启。

是否会触发这个bug,和网卡型号,驱动版本,运气,都有关系。有线网卡几乎百分之百触发,WiFi几乎不会触发。

解决方法有很多。手动重启服务,用任务计划程序自动重启服务,移除触发器,为这个服务添加一个workstation前置条件(本质也是让这个服务延迟启动)。

这里讲一下如何移除触发器。Windows没有UI调整触发器,只能通过cmd操作。

在服务里将Function Discovery Provider Host和Function Discovery Resource Publication设置为手动,并停止它们。此时后者可以看到触发器启动。关闭服务窗口。

管理员权限打开powershell,输入sc.exe triggerinfo FDResPub delete,回车。

再次进入服务,可以看到触发器启动已经消失。再把这两个服务都设置为 自动(延迟启动),并启动它们。



无触发器

此时,WSD已经可以正常工作。重启后,等待3分钟,待延迟启动的服务都启动完成,WSD也可以正常工作。

微软增加这个触发器是为了安全,即只有将网络配置文件设置为专用时,才会将本机发布到局域网。移除触发器后,任何配置文件,开机2分钟后,都会公布本机,如果不想这样,可以将触发器恢复。

同样是将两个服务设置为手动并停用,关闭服务窗口。

管理员权限打开powershell,输入sc.exe triggerinfo FDResPub start/strcustom/fbcfac3f-8460-419f-8e48-1f0b49cdb85e/PROFILE_CHANGED_TO_PRIVATE,回车。

再次进入服务,可以看到触发器启动已经恢复。

事实上,SMB1.0(NetBIOS)和WSD是两个并行的发现方法,开一个就可以。都开的话,按照上述设置后,Windows的电脑都是以WSD方式发现的,不再需要刻意设置一个主浏览器(如NAS)。有些设备不支持WSD,会以NetBIOS方式发现。



WSD

如果你只需要Windows电脑之间共享文件,可以只设置WSD,不开启SMB1.0,这会安全一些。

2 某台电脑没有密码怎么办?

在没有密码的电脑上设置:在桌面左下角的搜索框里搜索组策略并打开,定位到计算机配置-windows配置-安全设置-本地策略-安全选项。找到这个账户:使用空密码的本地账户只允许进行控制台登陆,选择已禁用。



组策略

在其它需要访问这台电脑的电脑上设置:控制面板-凭据管理器。选择Windows凭据,添加Windows凭据。





internet地址或网络地址,填写这台电脑的IP(可通过路由器DHCP设置固定IP),也可以计算机名。

用户名和密码,填写管理员用户名,密码留空即可。然后点击确定。

这个设置可以防止访问这台电脑的打印机时出现0x0000011b错误。

至此,Windows的网上邻居可以完美运行了。



网上邻居

其中3590是我的笔记本,使用AX200无线网卡连接路由器,因为是开机后连的网,所以是WSD。X570是我的台式机,2.5G网卡接的网线,所以是NetBIOS。其实有很小概率台式机也是WSD...只能说被微软遗弃的功能,bug是存在的。

发现方法的显示可以在标签栏右键,勾上发现方法即可。

无论发现方法是什么,文件传输都是用的win10最高的SMB3.0版本,支持多通道等高级特性。SMB1.0只是提供浏览计算机列表的支持。NetBIOS和WSD都只是计算机发现的方法,与传输协议无关。

使用该方法的文件传输速度是内网速度。2.5G内网约280M/S,WiFi6 160MHz 2x2近距离约190M/S,千兆内网约110M/S。

不要把SMB协议通过端口映射共享到公网,这非常危险。


回复

使用道具 举报

 楼主| 发表于 2025-10-14 15:56:11 | 显示全部楼层
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|风驰汽摩俱乐部

GMT+8, 2025-10-24 21:10 , Processed in 0.085363 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表