有没有办法将UNC路径映射到Windows 2003上的本地文件夹?

Dav*_*der 25 windows path unc local

我知道我可以将UNC路径映射到本地驱动器号.但是,我想知道是否有办法将UNC路径映射到本地文件夹.我有一个程序,其中有一个特定的文件夹硬编码到程序中,我想尝试创建一个具有相同名称的文件夹映射到UNC路径,以便可以从网络共享访问数据.这可行吗?具体来说,这是在Windows 2003服务器上.

Ian*_*oyd 20

是的,有一种方法可以将UNC路径映射到本地文件夹:

C:\>mklink /D Develop \\obsidian\Develop
symbolic link created for Develop <<===>> \\obsidian\Develop
Run Code Online (Sandbox Code Playgroud)

这是因为我希望构建服务器使用我自己的PC Develop文件夹作为其Develop文件夹:

10/20/2012  11:01 AM    <SYMLINKD>     Develop [\\obsidian\Develop]
Run Code Online (Sandbox Code Playgroud)

你有它.


MKLINK [[/D] | [/H] | [/J]] Link Target

        /D      Creates a directory symbolic link.  Default is a file
                symbolic link.
        /H      Creates a hard link instead of a symbolic link.
        /J      Creates a Directory Junction.
        Link    specifies the new symbolic link name.
        Target  specifies the path (relative or absolute) that the new link
                refers to.
Run Code Online (Sandbox Code Playgroud)

注意:在我的实际情况中,我需要另一级别的重定向,因为我正在使用的程序意识到这Develop是一个符号链接,指向远程机器,并拒绝遵守.我告诉程序关闭并通过给它一个指向本地资源的交叉点来做它所说的.

10/20/2012  11:06 AM    <JUNCTION>     Develop [C:\Develop2\]
10/20/2012  11:01 AM    <SYMLINKD>     Develop2 [\\obsidian\Develop]
Run Code Online (Sandbox Code Playgroud)

  • 您是否检查过以确保为符号链接评估启用了适当的设置:`fsutil behavior query SymlinkEvaluation`您可能只需要根据符号链接的配置启用其中一些.例如`fsutil behavior set SymlinkEvaluation R2R:1`.这使我的.net程序_comply_. (3认同)
  • 这不像OP要求的那样在Windows 2003上有效.添加了一个答案,使其看起来像在Windows 2003上安装了MkLink,并在2003年为UNC提供了符号链接行为:http://stackoverflow.com/a/18593425/18475 (3认同)
  • 额外的重定向是天才!这是解决我的问题的魔法(尝试使用 UNC 路径让 gulp/bower 为 VS 项目工作 - 由于在 Mac 上的 Parallels 内运行 Windows)。 (2认同)

fer*_*der 15

这完全符合OP所要求的 - 一个映射到网络共享的Windows 2003的符号链接.经过几个小时查看其他人并对其进行测试,这是我发现的唯一可以与网络共享一起使用的组件.

适用于Windows XP的符号链接驱动程序

此实用程序适用于XP和2003映射到网络共享并创建符号链接:http://schinagl.priv.at/nt/ln/ln.html#symboliclinksforwindowsxp

现在将它放在您放在路径上的目录中,并且您可以使用senable.exe(with symlink.sys)和ln.exe(您将需要来自上面的站点以及它对Visual C++运行时DLL的依赖性)来创建符号链接.

增加额外奖励:假冒MkLink

将这些额外的两个文件放在您拥有的同一目录中,senable.exe并确保这一切都在路径上.

mklink.cmd:

@echo off

SET DIR=%~dp0%
@powershell -NoProfile -ExecutionPolicy unrestricted -Command "& '%DIR%Symlink.ps1' %*"

pushd "%DIR%"
"%DIR%senable.exe" start
popd
Run Code Online (Sandbox Code Playgroud)

Symlink.ps1:

param (
 [string]$symlinktype,
 [string]$link,
 [string]$target
)

$scriptpath = $MyInvocation.MyCommand.Path
$ScriptDir = Split-Path $scriptpath

$senable = Join-Path "$ScriptDir" senable.exe
$ln = Join-Path "$ScriptDir" ln.exe

pushd "$ScriptDir"
& cmd /c "$senable" install
popd
& cmd /c "$ln" -s "$target" "$link"
Run Code Online (Sandbox Code Playgroud)

注意:

您需要在Windows 2003上安装以下其他项目(非R2,我还不完全确定您对R2的需求):

  • Microsoft .NET Framework 2.0 Service Pack 1
  • Windows Imaging Component
  • Windows Server 2003 Service Pack 2
  • Windows Management Framework Core(这带来了PowerShell 2)

巧克力包

我创建了一个巧克力包,将为您完成所有这些:http://chocolatey.org/packages/win2003-mklink

重要的提示

与常规符号链接不同,您不能简单地删除该文件夹以删除符号链接文件夹.如果这样做,它将删除它指向的真实文件夹.所以要特别小心使用.

  • 谢谢,这对我在Windows XP上有用.基本上,正如文档所说,需要安装驱动程序(`senable.exe install`)和符号链接路径(`ln -s // host/share/folder name`). (2认同)

Wul*_*art 5

您不能直接执行此操作,但如果您创建符号链接,您应该能够将其指向映射的驱动器号。

net use e: \\\\shares\folder# 您需要将其设置为持久,否则下次重新启动将破坏它。

使用cmd您想要的链接浏览到您的位置:

cd c:\folder

mklink /d name e:\

现在任何访问的东西都c:\folder\name\将被访问\\\\shares\folder\

  • 使用这种方法,您将需要考虑应用程序最终运行的上下文。映射的驱动器可能因用户而异,并且可能无法用于服务帐户,具体取决于您的环境。 (3认同)