符号链接 Windows

Symlink Windows

我正在尝试使用 c++/cli(基于 Windows)创建符号链接生成器 Microsoft 上有一个文档 ( MS )

但我不太清楚它是如何工作的。

我试图找到一个可行的例子,但找不到,而且我自己也找不到可行的解决方案。

我的完整代码HERE!

private: System::Void btnCreateSymlinks_Click(System::Object^  sender, System::EventArgs^  e) {
  String^ pathSource = GetSourcePath();
  String^ pathDest = GetDestinationPath();
  String^ folder = System::IO::Path::GetFileName(pathSource);
  lblInfo->Text = pathSource + " -> " + pathDest + "" + folder;
}

如何将 CreateSymbolicLink 函数与那些 pathSource 和 pathDest 一起使用?

为了在垃圾收集堆栈上使用 .NET 字符串,您需要固定指针(这是 p/invoke 为 C# 编码器自动执行的操作,但 C++/CLI 编码器需要请求)。

pin_ptr<const wchar_t> wcsTarget = PtrToStringChars(pathSource);
pin_ptr<const wchar_t> wcsSymlink = PtrToStringChars(Path::Combine(pathDest, folder));

然后只需调用 API 的 Unicode 版本(因为 .NET 字符串始终是 Unicode)。

CreateSymbolicLinkW(wcsSymlink, wcsTarget, 0U);