如何在重新启动后使 SUBST 映射持久化?

ric*_*ick 206 windows

Windows(XP 或更高版本)是否具有创建永久驱动器映射的内置方法,就像 SUBST 创建的那样?我找到了第 3 方工具psubst。有没有办法在没有 3rd 方工具的情况下做到这一点?

Ivo*_*pse 177

好吧维基百科提到

C:\>SUBST /?
Associates a path with a drive letter.

SUBST [drive1: [drive2:]path]
SUBST drive1: /D

  drive1:        Specifies a virtual drive to which you want to assign a path.
  [drive2:]path  Specifies a physical drive and path you want to assign to
                 a virtual drive.
  /D             Deletes a substituted (virtual) drive.

Type SUBST with no parameters to display a list of current virtual drives.
Run Code Online (Sandbox Code Playgroud)

因此,您可以使用subst. 在持续SUBST命令(psubst)软件似乎是该死的方便,他们提供的解决方案从启动运行:

https://code.google.com/p/psubst/#Inconstancy

无常

然而,重新启动系统会破坏虚拟磁盘。该怎么办?启动后可以创建磁盘。但是,在启动的早期阶段需要磁盘时该怎么办?比如运行服务?有系统功能可以从系统注册表启动虚拟磁盘:

REGEDIT4 

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\DOS Devices] 
"Z:"="\\??\\C:\\Documents and Settings\\All Users\\Shared Documents"
Run Code Online (Sandbox Code Playgroud)

创建一个带有扩展名的文本文件.REG并运行它就足够了。当系统下次启动时,虚拟磁盘将在登录时存在。它需要定义磁盘名称和路径。请注意,路径中的每个反斜杠都会加倍。

在 Windows 中,您可以按如下方式运行注册表编辑器:

  1. 开始 » 运行...(或点击Win+ R
  2. 类型: regedit
  3. 在 Windows Vista 及以上版本中,会弹出 UAC,单击“是”

  • 感谢您的解决方案。仅供参考,如果您以交互方式将变量键入 RegEdit,请不要将反斜杠加倍。也就是说,创建一个名为“Z:”(不带引号)的新字符串变量,并将值设置为上面显示的字符串,除了单个反斜杠。 (33认同)
  • 很高兴知道,即使我不再使用 `subst`。但回到我以前做的时候,我只是在我的 Startup 文件夹中有一个批处理文件来做这些事情。 (6认同)
  • @Devil'sAdvocate,`\??` 是 NT 对象管理器命名空间中的虚拟目录。首先它检查登录会话 DOS 'devices'(实际上 DOS 设备是到 NT 设备的符号链接,通常位于 `\Device` 中),然后是 `\Global??` DOS 设备。在 WinObj 中,您将在“\Sessions\0\DosDevices\[登录 ID]”中找到登录会话设备。请注意,对于每个 LSA 登录 ID,登录会话设备都在会话 0(服务)中进行跟踪。它们与桌面会话无关。这就是为什么如果您将驱动器映射为受限管理员,它在提升时不存在;这是一个不同的登录。 (4认同)
  • Joey:该解决方案在 Windows 7 下似乎不起作用。当运行具有管理权限的应用程序时,应用程序看不到替换的驱动器。 (3认同)
  • 使用 GUID 的好建议。下一个问题是查找指南的最简单方法是什么。答案是mountvol.exe。 (3认同)
  • 这太棒了。(它需要重新启动,仅供参考。)我们的源树必须从特定的驱动器号开始,以便我们的 PDB 始终在不同的计算机上对齐。此注册表设置解决了我多年来一直遇到的一个问题,即 subst 磁盘没有 runas,如果您需要(很少)在管理员帐户下运行 Visual Studio,这是一个很大的烦恼。 (2认同)
  • @cilerler,Windows 通过“UNC”DOS 设备实现 UNC 路径,因此您将使用 `\??\UNC\server\share`。“UNC”设备是指向本机 NT 设备 `\Device\Mup`(多个 UNC 提供程序)的链接。提供者设备向 MUP 注册,例如 `LanmanRedirector` (SMB)、`MailboxRedirectory`、`RdpDr` 和 `Csc`。 (2认同)

166*_*MMX 101

安装它HKEY_CURRENT_USER的好处是每个用户都有不同的设置。只要系统服务不依赖于设备,我更喜欢坚持用户空间设置。

REGEDIT4
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run]
"F Drive"="subst F: D:\\mount\\db"
"G Drive"="subst G: D:\\mount\\log"
Run Code Online (Sandbox Code Playgroud)

来源:http : //networkadminkb.com/KB/a446/how-to-use-drive-letters-mount-points-the-same-disk-drive.aspx

  • +1 用于展示如何在一个 reg 文件中进行多个映射。:-) (9认同)
  • +1 为方便起见并解释为什么 HKEY_CURRENT_USER。:) (6认同)
  • 也可以从命令行执行此操作(从 XP/Windows 2000 服务器开始):`reg add HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v "F Drive" /d "subst F: D:\x\db" ` NB \ 仅当它是 subst 命令的最后一个字符时才需要在此处转义,例如当目标是根目录时:`"subst F: D:\\"`; 单个 \ there 将被解释为逃避其后的 " 。 (4认同)
  • 这是一个更好的解决方案。这是创建该注册表项的 PowerShell 命令:`Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Run" -Name "G Drive" -Value "subst G: D:\\mount\\log "` (3认同)

dav*_*avr 53

您链接到的页面中有一个答案。您不需要第三方工具,您可以使用简单的注册表项来完成,如该页面所述。

使用以下内容创建一个名为“mapdrive.reg”的文本文件:

REGEDIT4 

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\DOS Devices] 
"Z:"="\\??\\C:\\Documents and Settings\\All Users\\Shared Documents" 
Run Code Online (Sandbox Code Playgroud)

然后应该可以双击它进行设置,不需要第 3 方工具。

  • 如果在 regedit 中执行此操作,请确保使用单个反斜杠。例如 \??\C:\Some\Directory (10认同)
  • reg 键与批处理文件相比的优势在于它在任何其他启动命令运行之前设置 subst 驱动器,以防其中一些需要 subst 驱动器运行 (8认同)
  • @Ivo:我称之为对未知的健康恐惧;) (6认同)

sag*_*age 30

我发现这个是因为我正在寻找对我的启动 subst 脚本的改进 - 它们工作正常,但有时在文件夹在启动时崩溃后执行,因为我的驱动器尚未映射。

首先,我编辑了注册表,但无法让它工作。但是,我确实遇到了这个替代方案,虽然它不使用 subst 确实为我回答了这个问题,“如何使 SUBST 映射在重新启动后持久化?” 不要使用 subst...(插入适当的 'computerName' 和 'pathName'):

net use u: "\\computerName\c$\pathName" /persistent:yes

我根据 Hank Arnold 在讨论本地驱动器映射时的建议改编了这个。我猜到 \\myComputerName\c 可能有用,但我不知道应用 $.

在尝试“net use”命令之前,尝试导航到

\\计算机名\c$
以确保您的 'computerName' 正确。

  • 如果您使用 `\\localhost\c$\path\to\thing`,它可以跨机器移植(或更改计算机名称的升级)。在 Win7+ 上使用映射驱动器的一个缺点是适用于网络驱动器的安全策略与本地驱动器不同,有些程序会拒绝从映射驱动器运行。 (7认同)
  • 优秀的解决方案,尽管有两个问题:1)它对本地文件系统不可见,2)权限...... (2认同)
  • 它对文件系统可见,对本地文件系统可见——它被标记为网络驱动器,就像某些驱动器被标记为可移动驱动器一样。这不会使此类驱动器不属于本地文件系统或对本地文件系统不可见——它使它们成为本地文件系统中的网络/可移动驱动器。 (2认同)
  • 在测试中,我使用(本地)安装的网络驱动器解决性能问题(几年前)也比直接使用文件系统(或 subst 等)慢。对于小文件或偶尔使用来说,这不是一个巨大的差异——不像通过实际网络到另一个“服务器”——但它很重要。 (2认同)

EBG*_*een 9

在您的启动文件夹中放置一个批处理文件,该文件执行您想要执行的所有 SUBST。

  • Windows 键 + R 来“运行”,shell:startup 打开启动文件夹 (3认同)

Ton*_*kas 9

我正在扩展davr 的答案,因为从映射驱动器中删除的任何文件都将被永久删除,而不是进入回收站。此 REG 文件基于从这篇讨论如何启用回收站的TechNet 文章中汇编信息。该示例将虚拟 Q 驱动器映射到文件夹“OneDrive - Test”,并启用 Q 驱动器上的回收站。更改路径和名称以适合您的情况。

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\DOS Devices]
"Q:"="\\??\\C:\\Users\\Tony\\OneDrive - Test"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FolderDescriptions\{9147E464-33A6-48E2-A3C9-361EFD417DEF}]
"RelativePath"="Q:\\"
"Category"=dword:00000004
"Name"="Q_Mapped_OneDrive"

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\BitBucket\KnownFolder\{9147E464-33A6-48E2-A3C9-361EFD417DEF}]
"MaxCapacity"=dword:0000c7eb
"NukeOnDelete"=dword:00000000

[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Explorer\FolderDescriptions\{9147E464-33A6-48E2-A3C9-361EFD417DEF}]
"RelativePath"="Q:\\"
"Category"=dword:00000004
"Name"="Q_Mapped_OneDrive"

[HKEY_CURRENT_USER\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Explorer\BitBucket\KnownFolder\{9147E464-33A6-48E2-A3C9-361EFD417DEF}]
"MaxCapacity"=dword:0000c7eb
"NukeOnDelete"=dword:00000000
Run Code Online (Sandbox Code Playgroud)

如果您只有一个这样的映射驱动器,那么您可以使用 GUID {9147E464-33A6-48E2-A3C9-361EFD417DEF}。如果您有多个映射驱动器,那么每个驱动器都应该与您最喜欢的 GUID 生成器中的一个 GUID 匹配。

  • 只是补充一点数据,我有一个64位Win 10系统,我测试了从32位应用程序(FastStone Image Viewer)删除时发生的情况,我发现回收站对32位不起作用-bit 应用程序没有 Wow6432Node 密钥。 (2认同)

cyb*_*onk 8

由于最初的 PSubst 有一些限制,而且似乎是作者总结的,我不得不根据自己的需要编写一个新版本,修复一些问题并增加功能和灵活性。

在此处查看 PSubst 版本 3 批处理文件

https://github.com/cyberponk/psubst

兼容 Windows 7、Windows 8、Windows 10、Windows Server 2012

注: 本作品无意贬低原作者,因实际需要而存在,具体如下:

  • 作为一个 newtork 管理员,我一直需要更换网络驱动器并摆弄不同的网络用户。

  • 由于不是每个人都是 Windows 专家,根据我通过网络阅读的评论,我认为带有错误处理的自动管理员提升会有所帮助。

  • 由于有些人在参数顺序上挣扎,我认为最好让脚本以任何顺序处理参数。

我不记得每一个添加的功能,但每一个包含都纯粹是必要的。我正在共享代码,以便其他人可能不会遇到我遇到的麻烦。除了分享和帮助之外,没有其他意图。