我正在尝试创建一个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点.
原文链接:/windows/371154.htmlhttp://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);