如何在C#中创建硬链接?

Swa*_*pta 23 .net c# hardlink

如何在C#中创建硬链接?请问任何代码片段?

nos*_*nos 35

BCL不提供此功能,因此您将不得不求助于p/invoke

[DllImport("Kernel32.dll", CharSet = CharSet.Unicode )]
  static extern bool CreateHardLink(
      string lpFileName,
      string lpExistingFileName,
      IntPtr lpSecurityAttributes
  );
Run Code Online (Sandbox Code Playgroud)

并使用它,例如

 CreateHardLink(@"c:\temp\New Link", @"c:\temp\Original File",IntPtr.Zero);
Run Code Online (Sandbox Code Playgroud)

  • `lpSecurityAttributes`参数[必须为'NULL`](https://msdn.microsoft.com/en-us/library/windows/desktop/aa363860.aspx),因此使用`IntPtr.Zero`. (2认同)

Dam*_*ash 32

[DllImport("Kernel32.dll", CharSet = CharSet.Unicode )]
  static extern bool CreateHardLink(
  string lpFileName,
  string lpExistingFileName,
  IntPtr lpSecurityAttributes
  );
Run Code Online (Sandbox Code Playgroud)

用法:

CreateHardLink(newLinkPath,sourcePath, IntPtr.Zero);

  • 可能还想在 newLinkPath 前面加上 "\\?\" 以避免 MAX_PATH 错误。https://docs.microsoft.com/en-us/windows/desktop/api/winbase/nf-winbase-createhardlinka (2认同)

Tob*_*ouw 11

如果你的意思是NTFS硬链接:

以下是(dotnetspark上的文字介绍):

遗憾的是,.NET Framework不支持硬链接和软链接.因此,您需要深入了解Windows API以允许您的应用程序使用此功能.您可以使用单个代码行创建一个硬链接,只需调用驻留在Kernel32.dll库中的Win32函数CreateHardLink()即可.该功能的定义如下:

BOOL CreateHardLink(
  LPCTSTR lpFileName,
  LPCTSTR lpExistingFileName,
  LPSECURITY_ATTRIBUTES lpSecurityAttributes
);
Run Code Online (Sandbox Code Playgroud)