Windows局域网文件传输:就近共享与共享文件夹详解
Windows局域网文件传输:就近共享与共享文件夹详解
在Windows系统中,局域网文件传输是一个常见的需求。本文将详细介绍两种主要的文件传输方式:就近共享和共享文件夹,并提供详细的步骤和示例代码。
就近共享
就近共享是Windows 10及以上版本中的一种简单文件传输方式,支持单个和多个文件共享,配置简单。但是,它要求传输文件的机器都是Windows 10以上的设备,不能直接共享文件夹目录,也不支持直接点播和预览常见格式,比如视频和音乐等。
对于Android设备,可以使用NearShare软件来实现就近共享功能。NearShare软件体积不小,可以用镜像加速链接后下载,或者从论坛下载。实际体验下来还可以,操作简单。
设置共享文件夹
共享文件夹是一种更通用和强大的文件传输方式,支持老系统,和非Windows系统访问资源。为了更好地理解Windows的共享文件夹及其相关功能,可以阅读一下准备工作,尽管这不是必须的。
选择合适的目录创建共享文件夹
为了避免共享文件夹创建完成后,其他用户无法访问(尽管登录成功,但内容是空的),建议把共享文件夹建立或选择在非用户目录下,例如:
- C:\share
这类简短的目录;而
- C:\User\UserX...
这类目录(这个目录是用户UserX的家目录下的某个目录,不妨记为目录P)则容易与到权限问题。
创建共享文件夹
Windows上创建共享文件夹的方式有好几种,有命令行方式,也有GUI方式。下面分别介绍这两大类方法。
使用命令行net share方式创建和管理
建议在Win10之前的系统中使用,虽然截至Win11为止还通用,但这类方法不在被维护,新系统用PowerShell的方法。
net share <ShareName>
net share <ShareName>=<drive>:<DirectoryPath> [/grant:<user>,{read | change |full}] [/users:<number> | /unlimited] [/remark:<text>] [/cache:{manual | documents | programs | BranchCache |none} ]
net share [/users:<number> | /unlimited] [/remark:<text>] [/cache:{manual | documents | programs | BranchCache |none} ]
net share {<ShareName> | <DeviceName> | <drive>:<DirectoryPath>} /delete
net share <ShareName> \\<ComputerName> /delete
示例:
用管理员身份打开一个命令行窗口
假设我的机器上有一个目录C:\sharePlus,那么我执行以下语句
PS> net share DemoShare=C:\sharePlus /remark:"demo share"
DemoShare was shared successfully.
此时其他计算机可以访问DemoShare这个名字来访问该目录中的内容。例如,创建共享文件夹的机器名为colorfulcxxu,并且启用了网络发现,在另一台也启用了网络发现的Windows中执行
start \\colorfulcxxu\demoshare
就可以访问共享文件夹demoshare了。
使用PowerShell中的SmbShare模块命令
这个模块中命令众多,适合于Windows 10以及之后的系统使用。后面单独开一节介绍常用的几个命令。
使用shrpubw程序引导创建
使用共享文件夹引导程序shrpubw.exe,这是一个Windows系统自带的一个使用程序。打开Windows命令行,输入shrpubw.exe即可启动。
shrpubw.exe是一个在Microsoft Windows操作系统中用于帮助用户创建和配置共享文件夹的向导程序。这个可执行文件(.exe)是系统自带的一部分,由Microsoft Corporation开发,主要用于简化网络共享设置过程。
当用户需要在网络上共享本地计算机上的某个文件夹,以便其他网络用户可以访问时,可以通过运行shrpubw.exe启动“创建共享文件夹向导”。该向导提供了图形化界面,引导用户完成以下步骤:
- 选择要共享的文件夹路径。
- 设置共享名,即网络上其他用户看到的共享资源的名称。
- 配置共享权限,包括哪些用户或组可以访问此共享,并确定他们的读写权限级别。
该引导软件支持它会更改防火墙使得共享文件夹能够生效(通常不需要我们自己再去设置防火墙)。
总的来说这是个很方便的程序,但是注意,Windows为了安全,匿名访问可能是不被允许的,如果需要匿名,可能要改注册表策略组等,我的建议是创建一个名为smb的用户专门用来访问共享文件夹就可以了(不需要登录该用户桌面),既安全又高效,如果要匿名的体验,可以把密码设置简单点即可。
使用资源管理器图形界面创建和管理
- 设置防火墙(参考准备工作一节)
- 选择文件或文件夹进行共享
打开资源管理器,右键进行共享设置
可以指定对那些人共享(进入设置可以允许任何用户访问,但是不保证匿名访问可行,可能需要进一步设置)。对于启用了SMB1功能的及其可能默认允许匿名访问。
包括选择哪些用户能够访问被共享的文件或目录
查看共享文件夹的网络路径
事实上您可以通过右键被共享的文件夹,查看其属性,其中的sharing部分给出了网络路径(NetWork Path)。其中\后面跟的第一个字段(截止于\前)的是当前共享文件夹的主机名(但是需要您启用网络发现才可以直接使用此路径访问,否则需要用IP地址代替主机名)。
使用PowerShell管理共享文件夹
在PowerShell中,可以使用New-SmbShare、Get-SmbShare和Remove-SmbShare等命令来创建、修改和删除共享文件夹。这些命令提供了更强大的功能和灵活性来管理共享资源。
常用命令
基础命令
- New-SmbShare (SmbShare) | Microsoft Learn
- Get-SmbShare (SmbShare) | Microsoft Learn
- Remove-SmbShare (SmbShare) | Microsoft Learn
挂载类的命令
- New-SmbMapping (SmbShare) | Microsoft Learn默认挂载只对powershell可见,资源管理器中是看不到的
- 同理有Get-SmbMapping,Remove-SmbMapping
- 在powershell中挂载共享文件夹的地址为盘符,可以方便命令行访问共享文件夹中的内容而不需要打开资源管理器
- 当然,您也可以选择使用合适的命令先挂载到资源管理器,然后任何命令行(比如net use或new-psdrive)就可以访问挂载后的盘符了
- New-PSDrive (Microsoft.PowerShell.Management) - PowerShell | Microsoft Learn
- 如果需要挂载到资源管理器,那么可以考虑用New-PSdrive命令
- 这里直接用被挂载的文件夹所在主机名,需要启用系统的网络发现功能才可以
PS C:\Users\cxxu\Desktop> New-PSDrive -Name "Z" -PSProvider "FileSystem" -Root "\\redmibookpc\share" -Persist
Name Used (GB) Free (GB) Provider Root
---- --------- --------- -------- ----
Z 114.17 361.79 FileSystem \\redmibookpc\share
PS C:\Users\cxxu\Desktop>
而直接用IP导致报错,将来可能会改进
PS C:\Users\cxxu\Desktop> New-PSDrive -Name "Q" -PSProvider "FileSystem" -Root "\\192.168.1.158\share"
New-PSDrive: The specified drive root "\\192.168.1.158\share" either does not exist, or it is not a folder.
创建共享文件夹
使用New-SmbShare命令可以创建新的共享文件夹。下面是创建共享文件夹的基本示例:
# 创建共享文件夹
New-SmbShare -Name "Share" -Path "C:\Share" -ChangeAccess "Everyone" #这里赋予任意用户修改权限(包含了可读权限和修改权限)
参数解释
- -Name:指定共享的名称。
- -Path:指定要共享的文件夹路径。
- -FullAccess:指定具有完全访问权限的用户或组。
如果需要设置“读取”或“更改”权限,可以使用-ReadAccess和-ChangeAccess参数,并且这三个参数可以同时出现
修改共享文件夹
使用Set-SmbShare命令可以修改现有的共享文件夹设置。例如,修改共享文件夹的权限:
# 修改共享文件夹的权限
Set-SmbShare -Name "Share" -ChangeAccess "Everyone"
删除共享文件夹
使用Remove-SmbShare命令可以删除共享文件夹:
# 删除共享文件夹
Remove-SmbShare -Name "Share" -Force
查看现有共享文件夹(推荐方法)
使用Get-SmbShare命令可以查看现有的共享文件夹:
# 查看所有共享文件夹
Get-SmbShare
# 查看特定共享文件夹
Get-SmbShare -Name "Share"
PS> get-smbshare
Name ScopeName Path Description
---- --------- ---- -----------
DemoShareCC * C:\share1 share folder grant everyone
DemoShareFC * C:\share1 share folder grant everyone
DemoShareMultipleGrant * C:\share1
DemoShareRC * C:\share1 share folder grant everyone
IPC$ * Remote IPC
share * C:\share ColorfulCxxuShare
Users * C:\Users
PS> get-smbshare -Name share
Name ScopeName Path Description
---- --------- ---- -----------
share * C:\share ColorfulCxxuShare
通过上述命令,您可以在PowerShell中有效地管理共享文件夹,包括创建、修改和删除共享文件夹。合理设置权限和管理共享资源,可以提高网络资源的安全性和使用效率。
示例:完整的创建和配置共享文件夹过程
假设我们要创建一个名为ReportsShare的共享文件夹,路径为D:\Documents\Reports,并赋予用户组Everyone“读取”权限,下面是完整的过程:
# 创建共享文件夹并设置读取权限
New-SmbShare -Name "ReportsShare" -Path "D:\Documents\Reports" -ReadAccess "Everyone"
# 查看已创建的共享
Get-SmbShare -Name "ReportsShare"
# 修改权限为更改权限
Set-SmbShare -Name "ReportsShare" -ChangeAccess "Everyone"
# 最后删除共享文件夹
Remove-SmbShare -Name "ReportsShare" -Force
访问共享文件夹及其相关操作
另见它文windows@资源管理器中的地址栏@访问共享文件夹的各种方法@管理共享文件夹-CSDN博客