在.NET中,如何在NTFS中创建连接,而不是Symlink?
发布时间:2020-12-13 20:11:58 所属栏目:Windows 来源:网络整理
导读:我正在尝试创建一个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:userscheesoDocuments03/22/2009 09:45
我正在尝试创建一个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:userscheesoDocuments 03/22/2009 09:45 PM <JUNCTION> My Music [??c:userscheesoMusic] 05/11/2007 05:42 PM <DIR> My Received Files 03/22/2009 09:46 PM <JUNCTION> my videos [??c:userscheesoVideos] 我读到某个地方,连接是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); 我究竟做错了什么?
看起来你可以,还有人在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); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |