使用自定义驱动器映射运行批处理文件


1

我想创建一个“迷你虚拟环境”来运行程序。我的正常环境和虚拟环境之间的唯一区别是驱动器映射。

  • 我有一个 X: 驱动器映射到 \\some\network\location
  • 我有一个程序 myapp.exe 期待的 X: 要映射到的驱动器 C:\local\path
  • 我需要保留我的 X: 驱动器映射到 \\some\network\location 整个过程

我希望能够运行以下批处理文件,并且不会影响当前环境:

subst X: C:\local\path
myapp.exe

实现这一目标的一种方法是使用 runas 命令执行批处理文件。这种方法的缺点是你必须每次都提供用户密码,即使你 runas 当前用户。
mwolfe02

Answers:


0

如果应用程序检查的路径尚不存在,则可以临时创建符号链接。应用程序将在其期望的目录中找到所需的文件,而文件系统几乎透明地将操作重定向到实际路径。谨慎使用; (un)例如,如果,可能会发生预期的坏事 C:\local\path\ 已经存在。

默认情况下,Windows仅授予Administrators组权限的用户以创建符号链接。因此,必须使用提升运行以下脚本,或者(Windows 7)必须通过安全策略设置权限( secpol.msc 或“控制面板”,“管理工具”,“本地安全策略”),请参见“本地策略,用户权限分配”部分。

mklink /D C:\local\path X:\
myapp.exe
rmdir C:\local\path

我更喜欢SUBST.exe这个方法,因为如果你不得不删除符号链接那么它将会非常不稳定。使用“subst / d X:”命令比使用“rm -r X:\”更安全,更不可怕。我知道MKLINK是一个象征性的链接,但我仍然要小心“以防万一”它是一个硬链接。
djangofan

有趣的方法,但我需要在本地的几个文件 X: 驱动器也将存在于网络中 X: 驾驶。我正在尝试使用我本地的测试数据设置自动化测试 X: 驾驶。因此,文件的潜在重叠不仅是可能的,而且是整点。不过,这种方法绝对有其他用例的优点。
mwolfe02
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.