/// <summary> /// Converts <see cref="Operation"/> to a well-formed string that can be used as command line input /// </summary> public string ToCommandLine(PathTable pathTable, bool escapeResult = false) { PathTable = pathTable; StringBuilder sb = new StringBuilder(); sb.Append(((int)OpType).ToString(System.Globalization.CultureInfo.CurrentCulture)); var orderOfArgs = new string[] { Path.IsValid?FileOrDirectoryToString(Path) : null, Content, LinkPath.IsValid ? FileOrDirectoryToString(LinkPath) : null, SymLinkFlag.ToString(), AdditionalArgs // The process as a test executable does not use the DoNotInfer field }; foreach (var arg in orderOfArgs) { sb.Append(OperationArgsDelimiter); if (arg != null) { sb.Append(arg.ToString()); } } return(escapeResult ? CommandLineEscaping.EscapeAsCommandLineWord(sb.ToString()) : sb.ToString()); }
public static bool IsSymLink(string path, SymLinkFlag dwFlags) { switch (dwFlags) { case SymLinkFlag.File: return(new FileInfo(path).Attributes.HasFlag(FileAttributes.ReparsePoint)); case SymLinkFlag.Directory: return(new DirectoryInfo(path).Attributes.HasFlag(FileAttributes.ReparsePoint)); default: throw new ArgumentOutOfRangeException(nameof(dwFlags), dwFlags, null); } }
public static extern bool CreateSymbolicLink(string lpSymlinkFileName, string lpTargetFileName, SymLinkFlag dwFlags);