在.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);

相关文章

Windows2012R2备用域控搭建 前置操作 域控主域控的主dns:自...
主域控角色迁移和夺取(转载) 转载自:http://yupeizhi.blo...
Windows2012R2 NTP时间同步 Windows2012R2里没有了internet时...
Windows注册表操作基础代码 Windows下对注册表进行操作使用的...
黑客常用WinAPI函数整理之前的博客写了很多关于Windows编程的...
一个简单的Windows Socket可复用框架说起网络编程,无非是建...