微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在.NET中,如何在NTFS中创建连接,而不是Symlink?

我正在尝试创建一个NTFS连接.从cmd行可以使用 junction.exe tool from sysinternals执行此操作.连接的DIR cmd的输出如下所示:
Volume in drive C has no label.
 Volume Serial Number is C8BC-2EBD

 Directory of c:\users\cheeso\Documents

03/22/2009  09:45 PM    <JUNCTION>     My Music [\??\c:\users\cheeso\Music]
05/11/2007  05:42 PM    <DIR>          My Received Files
03/22/2009  09:46 PM    <JUNCTION>     my videos [\??\c:\users\cheeso\Videos]

我读到某个地方,连接是Symbolic Links的一个子集.

所以我尝试使用CreateSymbolicLink创建一个连接点.当我这样做,我实际上得到一个符号,而不是一个连接点.

09/09/2009  11:50 AM    <SYMLINKD>     newLink [.\]

那里也有CreateHardLink.那里的那个文档(也称为“Reparse Points”)是硬链接一个子集.但我似乎无法让这个电话工作.它完成,但没有硬链接或连接点创建.

我正在使用.NET / C#,导入如下所示:

[Interop.DllImport("kernel32.dll",EntryPoint="CreateSymbolicLinkW",CharSet=Interop.CharSet.Unicode)]
    public static extern int CreateSymbolicLink(string lpSymlinkFileName,string lpTargetFileName,int dwFlags);

    [Interop.DllImport("kernel32.dll",EntryPoint="CreateHardLinkW",CharSet=Interop.CharSet.Unicode)]
    public static extern bool CreateHardLink(string lpFileName,string lpExistingFileName,IntPtr mustBeNull);

我究竟做错了什么?
如何从C#中创建一个连接点?

看起来你可以,还有人在CodeProject上创建了一个库,它有许多在C#中构建的功能,可以使用Junction点.

http://www.codeproject.com/KB/files/JunctionPointsNet.aspx

看起来他实际上正在使用以下DllImport来完成它:

[DllImport("kernel32.dll",CharSet = CharSet.Auto,SetLastError = true)]
    private static extern bool DeviceIoControl(IntPtr hDevice,uint dwIoControlCode,IntPtr InBuffer,int nInBufferSize,IntPtr OutBuffer,int nOutBufferSize,out int pBytesReturned,IntPtr lpOverlapped);

原文地址:https://www.jb51.cc/windows/371154.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐