windows@允许映射挂载http链接@挂载局域网http链接的webdav磁盘
文章目录
资源管理器挂载网络驱动器👺
- 对于共享文件夹(smb)协议(
\\server\sharefolder)类型的连接可以直接挂载 - 对于https安全连接也可以挂载
- 但是对于http协议链接,新系统可能需要修改注册表,使得系统能够挂载http链接
- 这里给出一个命令行版本,操作更简单
允许http链接映射为磁盘驱动器(命令行方式修改注册表)😊
-
下面的操作将是的windows能够将http链接映射为驱动器
-
首先,您需要使用管理员方式打开
cmd或者powershell -
如果目标明确,执行以下命令行
-
reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebClient\Parameters /v BasicAuthLevel /t REG_DWORD /d 2 /f reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebClient\Parameters /v FileSizeLimitInBytes /t REG_DWORD /d 0xffffffff /f # Restart-Service WebClient #如果是powershell,可以restart-service 代替下面的2个语句 net stop WebClient net start WebClient
-
-
这里使用了
/f参数强制修改,否则中途会让你确认,就是输入yes即可,如果那您不放心,可以去掉/f参数
演示(optional)
-
可以先查询一下原来的值
[BAT:78%][MEM:35.12% (11.13/31.70)GB][14:56:31] [~\Desktop] PS>reg query HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebClient\Parameters /v BasicAuthlevel HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebClient\Parameters BasicAuthlevel REG_DWORD 0x1也可以用powershell来查看,可以分别用
gp或gpv来查看,也可以用全称get-itemproperty和get-itempropertyValuePS C:\Users\cxxu> Get-ItemPropertyValue -Path 'HKLM:\SYSTEM\CurrentControlSet\Services\WebClient\Parameters' -Name BasicAuthLevel 2 PS C:\Users\cxxu> (Get-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Services\WebClient\Parameters' -Name BasicAuthLevel).BasicAuthLevel 2 -
用管理员权限修改
[BAT:78%][MEM:35.07% (11.12/31.70)GB][14:56:52] [~\Desktop] PS>reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebClient\Parameters /v BasicAuthLevel /t REG_DWORD /d 2 Value BasicAuthLevel exists, overwrite(Yes/No)? yes The operation completed successfully.
可选更改:文件大小限制
-
reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebClient\Parameters /v FileSizeLimitInBytes /t REG_DWORD /d 0xffffffff -
实操
#查询修改前的值 [BAT:78%][MEM:35.89% (11.38/31.70)GB][15:01:25] [~\Desktop] PS>reg query HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebClient\Parameters /v FileSizeLimitInBytes HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebClient\Parameters FileSizeLimitInBytes REG_DWORD 0x2faf080 [BAT:78%][MEM:35.80% (11.35/31.70)GB][15:02:32] [~\Desktop] PS>reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebClient\Parameters /v FileSizeLimitInBytes /t REG_DWORD /d 0xffffffff Value FileSizeLimitInBytes exists, overwrite(Yes/No)? yes The operation completed successfully.
刷新使配置生效
- 可以通过重启计算机来刷新
- 也可以通过以下重启服务的方式刷新
重启webclient服务
-
我们用管理员权限打开powershell操作:
- 可选:
Get-Service webclient查看服务详情 - 再用
Restart-Service WebClient重启服务
[BAT:78%][MEM:34.73% (11.01/31.70)GB][15:04:40] [~\Desktop] PS>Get-Service WebClient Status Name DisplayName ------ ---- ----------- Running WebClient WebClient [BAT:78%][MEM:34.73% (11.01/31.70)GB][15:04:44] [~\Desktop] PS>Restart-Service WebClient - 可选:
基本网络盘映射和挂载操作
执行映射
-
关闭所有powershell(如果有的话),(离开管理员权限命令行窗口)打开另一个普通权限的命令行窗口),例如
-
重新打开一个powershell进行驱动器映射(使用net use命令,详情另见它文)
-
powershell
$DriveLetter='W' # $HostAddress='127.0.0.1' $HostAddress='192.168.1.178'#局域网内的另一个主机示例 $Port=5244 net use "$($DriveLetter):" "http://$($HostAddress):$($Port)/dav" /p:yes /savecred -
cmd
@echo off set DriveLetter=W set HostAddress=127.0.0.1 set Port=5244 net use "%DriveLetter%:" "http://%HostAddress%:%Port%/dav" /p:yes /savecred
-
Note
-
挂载完毕后检查是否挂载成功
-
如果映射命令提示执行成功,但是资源管理器中却没有看到新的磁盘,需要打开新的普通权限的命令行窗口重新执行
-
net use #检查挂载情况(如果没有成功列出空列表,那么重新执行挂载命令)#再执行挂载之前,打开一个普通权限的命令行窗口(挂载不需要管理员权限,不需要时就尽量不要用管理员权限来执行命令,遵循权限最小原则可以减少将来访问文件权限时遇到不必要权限问题的麻烦 PS C:\Users\cxxu> net use W: http://192.168.1.178:5244/dav /p:yes /savecred 为“192.168.1.178”输入用户名: admin 输入 192.168.1.178 的密码:(如果有密码,则输入密码,字符是透明的,不要输错) 命令成功完成。 #虽然命令行提示执行成功,但是需要手动检查实际上是否挂载,本例子中,如果成功,应该可以找到W:盘如果返回提示空的语句,参考下面
#下面是检查列表为空的情况,这时候我们需要打开新的命令行窗口重新执行一遍上面的挂载命令 PS C:\Users\cxxu> net use 会记录新的网络连接。 列表是空的。 # 尝试重新挂载(可以再打开一个新的命令行窗口,挂载不需要管理员权限) PS C:\Users\cxxu> net use W: http://192.168.1.178:5244/dav /p:yes /savecred 命令成功完成。 PS C:\Users\cxxu> net use 会记录新的网络连接。 状态 本地 远程 网络 ------------------------------------------------------------------------------- W: \\192.168.1.178@5244\dav Web Client Network 命令成功完成。 -
如果还是不行,尝试重启系统后再查看是否能够映射(挂载)成功
-
-
检查挂载:直接执行
net use,可以看到挂载列表,如果非空,说明有网络磁盘挂载上了
powershell函数封装
-
这里用到的函数
Mount-NetDrive是对net use的封装-
function Mount-NetDrive { <# .SYNOPSIS 挂载http链接形式的网络驱动器,通常用于局域网挂载 这里是对net use 的一个封装,而Powershell 的New-PSDrive命令并不那么好用,链接识别有一定问题 $HostAddress =$iqoo10pro .DESCRIPTION 为了方便省事,这里记住密码,不用每次都输入密码 net use W: "http://$HostAddress:5244/dav" /p:yes /savecred 目前已知New-PSDrive有挂载问题是,报错如下 New-PSDrive: The specified drive root "\\192.168.1.178:5244\dav" either does not exist, or it is not a folder. .EXAMPLE PS☀️[BAT:74%][MEM:31.02% (9.84/31.71)GB][9:54:22] # [~\Desktop] PS> Mount-NetDrive -HostAddress 192.168.1.165 -DriveLetter M -Port 5244 The command completed successfully. New connections will be remembered. Status Local Remote Network ------------------------------------------------------------------------------- M: \\192.168.1.165@5244\dav Web Client Network Unavailable W: http://localhost:5244/dav Web Client Network The command completed successfully. .EXAMPLE [BAT:78%][MEM:37.64% (11.93/31.70)GB][15:31:09] [~] PS>Mount-NetDrive -host $iqoo10pro -DriveLetter M -Port 5244 The command completed successfully. .EXAMPLE 如果重复执行同一个映射,并且第一次执行操作成功,那么第二次会提示失败(盘符被占用) [BAT:78%][MEM:37.46% (11.87/31.70)GB][15:31:32] [~] PS>Mount-NetDrive -host $iqoo10pro -DriveLetter M -Port 5244 System error 85 has occurred. The local device name is already in use. #> param( # 手机端ip地址 $HostAddress = 'localhost', $CompleteUri = '', $DriveLetter = 'M', $Port = '5244' ) $uri = ($CompleteUri) ? $CompleteUri : "http://$($HostAddress):$($Port)/dav" net use "${DriveLetter}:" $uri /p:yes /savecred #检查映射结果 net use }
-
记住登录密码@自动映射选项
-
/savecred保存登录凭证 -
/p:yes永久记住
取消映射
-
使用
net use <DriverName:> /delete来取消映射 -
[BAT:78%][MEM:37.94% (12.03/31.70)GB][15:27:58] [M:\] PS>net use M: /delete There are open files and/or incomplete directory searches pending on the connection to M:. Is it OK to continue disconnecting and force them closed? (Y/N) [N]: Y M: was deleted successfully. -
封装成powershell函数
function Remove-NetDrive { <# .SYNOPSIS This function removes a network drive mapping. .DESCRIPTION This function uses the `net use` command to remove a network drive mapping. The drive letter to be removed is specified as a parameter. If no drive letter is provided, the default is 'M'. .PARAMETER DriverLetter The drive letter of the network drive to be removed. Default is 'M'. .EXAMPLE Remove-NetDrive -DriverLetter 'Z' This command removes the network drive mapping associated with the drive letter 'Z'. .NOTES This function does not require administrative privileges to remove a network drive mapping. #> param ( $DriverLetter = 'M' ) net use "${DriverLetter}:" /delete }
取消记住密码(凭证管理)
- 另见它文关于
Credential Manager的使用

浙公网安备 33010602011771号