29

C#でハードリンクを作成するにはどうすればよいですか?コードスニペットをお願いします。

4

5 に答える 5

41
[DllImport("Kernel32.dll", CharSet = CharSet.Unicode )]
  static extern bool CreateHardLink(
  string lpFileName,
  string lpExistingFileName,
  IntPtr lpSecurityAttributes
  );

使用法:

CreateHardLink(newLinkPath,sourcePath, IntPtr.Zero);

于 2010-08-02T12:32:10.547 に答える
38

BCL はこれを提供しないため、p/invoke に頼る必要があります。

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

そしてそれを例えばのように使う

 CreateHardLink(@"c:\temp\New Link", @"c:\temp\Original File",IntPtr.Zero);
于 2010-08-02T12:29:04.220 に答える
11

NTFS ハードリンクの場合:

以下は ( dotnetspark に関するテキストの紹介) です。

残念ながら、.NET Framework ではハード リンクもソフト リンクもサポートされていません。したがって、Windows API を掘り下げて、アプリケーションがこの機能を使用できるようにする必要があります。Kernel32.dll ライブラリにある Win32 関数 CreateHardLink() への単純な呼び出しを使用して、1 行のコードを使用してハード リンクを作成できます。この関数の定義は次のとおりです。

BOOL CreateHardLink(
  LPCTSTR lpFileName,
  LPCTSTR lpExistingFileName,
  LPSECURITY_ATTRIBUTES lpSecurityAttributes
);
于 2010-08-02T12:28:34.673 に答える
-3
Process.Start("mklink /H", String.Format("{0} {1}", link, target));
于 2010-08-02T12:35:53.177 に答える