加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

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

我究竟做错了什么?
如何从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);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读