Как создать жесткую ссылку в C #?

Существует исключение: массивы длиной 0 строк

#include <iostream>

class CompletlyEmpty {
  char NO_DATA[0];
};

int main(int argc, const char** argv) {
  std::cout << sizeof(CompletlyEmpty) << '\n';
}
23
задан abatishchev 28 March 2012 в 13:06
поделиться

4 ответа

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

Использование:

CreateHardLink (newLinkPath, sourcePath, IntPtr.Zero);

32
ответ дан 29 November 2019 в 00:48
поделиться

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);
35
ответ дан 29 November 2019 в 00:48
поделиться

Если вы имеете в виду NTFS Hardlinks:

Ниже (введение текста на dotnetspark) :

К сожалению, ни жесткие, ни мягкие ссылки не поддерживаются .NET Framework. Поэтому вам придется покопаться в Windows API, чтобы ваше приложение могло использовать эту функцию. Вы можете создать жесткую ссылку с помощью одной строки кода, используя простой вызов функции Win32 CreateHardLink(), которая находится в библиотеке Kernel32.dll. Определение этой функции выглядит следующим образом:

BOOL CreateHardLink(
  LPCTSTR lpFileName,
  LPCTSTR lpExistingFileName,
  LPSECURITY_ATTRIBUTES lpSecurityAttributes
);
11
ответ дан 29 November 2019 в 00:48
поделиться
Process.Start("mklink /H", String.Format("{0} {1}", link, target));
0
ответ дан 29 November 2019 в 00:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: