private static extern bool CreateSymbolicLink(String lpSymlinkFileName, String lpTargetFileName, SYMBOLIC_LINK_FLAG dwFlags);
private static extern bool createSymbolicLink(string lpSymlinkFileName, string lpTargetFileName, SYMBOLIC_LINK_FLAG dwFlags);
public static extern BOOLEAN CreateSymbolicLinkW( string lpSymlinkFileName, string lpTargetFileName, SYMBOLIC_LINK_FLAG dwFlags);
public static void CreateSymbolicLink(string SymlinkFileName, string TargetFileName, SYMBOLIC_LINK_FLAG LinkType) { if (SymlinkFileName.Length >= MAX_PATH) { SymlinkFileName = string.Format(@"\\?\{0}", SymlinkFileName); } if (TargetFileName.Length >= MAX_PATH) { TargetFileName = string.Format(@"\\?\{0}", TargetFileName); } if (!createSymbolicLink(SymlinkFileName, TargetFileName, LinkType)) { Marshal.ThrowExceptionForHR(Marshal.GetHRForLastWin32Error()); } }
public static bool CreateRelativeLink(string lpSymlinkFileName, string lpTargetFileName, SYMBOLIC_LINK_FLAG dwFlags, bool deleteOldLink = false) { if (Directory.Exists(lpSymlinkFileName) && !IsSymbolic(lpSymlinkFileName)) { try { Directory.Move(lpSymlinkFileName, $"{lpSymlinkFileName}.old"); Log.Notice($"{Language.Resource.MOVED} {lpSymlinkFileName} -> {lpSymlinkFileName}.old"); } catch (Exception ex) { Log.Notice(ex.Message); } } else if (Directory.Exists(lpSymlinkFileName) && IsSymbolic(lpSymlinkFileName)) { if (!deleteOldLink) { return(true); } Directory.Delete(lpSymlinkFileName); } return(CreateSymbolicLink(lpSymlinkFileName, lpTargetFileName, dwFlags)); }