subst(映射文件夹为磁盘)命令的一些坑

1、背景

使用subst命令,你可以很容易的将一个文件夹映射为一个磁盘。这是cmd下自带的帮助信息:

C:\Users\Administrator>subst /?

将路径与驱动器号关联。

 

SUBST [drive1: [drive2:]path]

SUBST drive1: /D

 

drive1: 指定要分配路径的虚拟驱动器。

[drive2:]path 指定物理驱动器和要分配给虚拟驱动器的路径。

/D 删除被替换的

(虚拟)驱动器。

 

不带参数键入 SUBST,以显示当前虚拟驱动器的列表。

比如,直接运行:

1. subst X: D:\dirname

你可以创建一个磁盘,盘符为X,内容与D:dirname等效,除了不能运行一些磁盘检测类的程序/指令,其他的文件读取写入都是一样的。

subst缺点就是每次重启电脑需要重新映射,不过可以写成批处理,放到启动菜单里。

 

微软官方关于subst的解释见截图(截图有效防止404)【点击可以放大】

 

2、问题

并没有找到官方解释。第三方解释subst指令是基于“当前”用户上下文的。说人话就是A用户创建的盘符,B用户是看不见的,这里无论AB用户的权限如何,哪怕B比A的权限高也不行。

另外假设有这种情况:

你的电脑有两个用户,administrator处于被禁用的状态。另一个账号叫zhangsan,也是管理员权限。

此时你从cmd.exe上右键“以管理员身份运行”时,这个cmd的用户上下文居然是administrator,而不是zhangsan。

这导致了你以管理员身份运行cmd之后,执行subst指令映射了磁盘,无法直接在资源管理器中看到。但是使用“以管理员身份运行”的subst指令可以看到。

 

最痛苦的是:

当你以当前用户身份zhangsan执行cmd,映射为磁盘后。 你编写的其他程序,如果是管理员身份运行的,也读写不到zhangsan创建映射盘符。

 

3、解决方案

目前找到的所有解决方案都不如直接使用subst效果好。或者有潜在的其他问题的可能。

建议方案有两个:

  • 摆烂,看不见就看不见,程序能跑就行。
  • 以当前用户身份运行cmd程序,并执行subst指令。如果有编写其他程序,如果可能,降低其权限要求,能不用管理员就别用管理员了。

4、补充,网上一些其他解决方案:

1、分别以两种身份运行subst指令。这算是一种稍微好一点的方案,但是麻烦。

2、第二种使用修改系统注册表的办法

Windows Registry Editor Version 5.00

 

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\DOS Devices]

"X:"="\\??\\D:\\dirname1"

"Y:"="\\??\\D:\\dirname2"

已知有两个问题:

  • 无法重命名磁盘。
  • 不能使用回收站,删除就直接没了,无法撤销。

个人极其不推荐这种方法,不确定还会不会有其他什么问题。

 

转载:鸟儿博客 » subst(映射文件夹为磁盘)命令的一些坑

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇