Windows 10创建文件的软链接

时间:2018-04-12 11:54:49

标签: windows windows-10 command-prompt symlink

在Windows 10上,我尝试通过以管理员身份打开的命令提示符创建指向文件的软链接。

var loader = new THREE.OBJLoader();
loader.load('assets/models/head/lee-perry-smith-head-scan.obj', function (object) 
{
    var faceMaterial = getMaterial('standard', 'rgb(255,200,200)');
     object.traverse(function(child) 
     {
        if (child.name == 'Infinite') 
        {
            child.verticesNeedUpdate = true;
            child.material = faceMaterial;
        }
    });
    object.children.forEach(function(vert)
    {
    vert.geometry = new THREE.Geometry().fromBufferGeometry(vert.geometry);
        vert.geometry.vertices[0].set( 0, 2, 5 );
    })

...我想在其中创建一个指向bibliography.bib文件的软链接到文件夹B中。

这会引发错误拒绝访问

可能是什么原因?

2 个答案:

答案 0 :(得分:1)

必须将我的命令修改为

mklink "E:\Folder A\Folder B\bibliography.bib" "E:\Folder A\Folder C\bibliography.bib"

答案 1 :(得分:0)

首先,我们可以创建从目录到文件的符号链接,反之亦然 - 从文件到FSCTL_SET_REPARSE_POINT目录 - 这是合法的会工作。我们可以通过这个符号链接使用目标文件(或目录)。如果目标是文件,我们可以打开并将其作为文件读取。但是任何文件浏览器都不正确地使用这样的符号链接,因为它将使用源文件属性FILE_ATTRIBUTE_DIRECTORY - 因此尝试使用与目录一样的文件或反之亦然。因为这种存在意义只使用file -> filedirectory -> directory符号链接(src和目标具有相同的FILE_ATTRIBUTE_DIRECTORY属性 - 两者都有或没有)

同样mklink假设要创建的符号链接文件 - 但不存在。在内部,它使用NtCreateFile配置FILE_CREATE。结果我们得到错误,如果文件已经存在。如果目录已存在且在调用NtCreateFile中,我们不使用选项FILE_DIRECTORY_FILE(当我们使用/D切换时,mklink使用此选项) - 我们遇到STATUS_FILE_IS_A_DIRECTORY错误。 (指定为目标的文件是一个目录,调用者指定它可以是除目录之外的任何内容。)。但mklink显示错误消息之前,首先将其转换为win32错误代码,然后转换为.. ERROR_ACCESS_DENIED。结果我们查看了Access denied消息,尽管错误与拒绝访问没有共同之处

如果我们想通过mklink创建符号链接到文件,我们需要选择尚未存在的文件名(路径)作为要创建的符号链接