static ProgramContext() { Command anonymize = new AnonimyzeCommand("A", "Anonymize .LNK file (remove all tracking data)."); Command createAbsolute = new CreateAbsoluteCommand("C", "Create absolute .LNK file."); Command displayInfos = new DisplayInfosCommand("D", "Display .LNK file information."); Command createRelative = new CreateRelativeCommand("R", "Create relative .LNK file."); Command update = new UpdateCommand("U", "Update .LNK file."); var allcommands = new List <Command> { anonymize, createAbsolute, displayInfos, createRelative, update }; var writecommands = new List <Command> { anonymize, createAbsolute, createRelative, update }; Commands = allcommands.AsReadOnly(); WriteCommands = writecommands.AsReadOnly(); var atime = CreateDateTimeOption("atime", "Header", "AccessTime"); var ctime = CreateDateTimeOption("ctime", "Header", "CreationTime"); var wtime = CreateDateTimeOption("wtime", "Header", "WriteTime"); var fsize = CreateOption("fsize", "Header", "FileSize"); var iidx = CreateOption("iidx", "Header", "IconIndex"); var iloc = CreateOption("iloc", "IconLocation"); var name = CreateOption("name", "Name"); var rpath = CreateOption("rpath", "RelativePath"); var wdir = CreateOption("wdir", "WorkingDirectory"); var args = CreateOption("args", "Arguments"); var fattr = CreateEnumOption("fattr", typeof(FileAttributes), "Header", "FileAttributes"); var swin = CreateEnumOption("scmd", typeof(ShowCommand), "Header", "ShowCommand"); var dlpt = CreateHeaderFlagOption("dlpt", LinkFlags.DisableLinkPathTracking); var dkft = CreateHeaderFlagOption("dkft", LinkFlags.DisableKnownFolderTracking); var dkfa = CreateHeaderFlagOption("dkfa", LinkFlags.DisableKnownFolderAlias); var fnli = CreateHeaderFlagOption("fnli", LinkFlags.ForceNoLinkInfo); var fnlt = CreateHeaderFlagOption("fnlt", LinkFlags.ForceNoLinkTrack); var npa = CreateHeaderFlagOption("npa", LinkFlags.NoPidlAlias); var risp = CreateHeaderFlagOption("risp", LinkFlags.RunInSeparateProcess); var rau = CreateHeaderFlagOption("rau", LinkFlags.RunAsUser); var alloptions = new List <Option> { atime, ctime, wtime, fsize, iidx, iloc, name, rpath, wdir, args, fattr, swin, dlpt, dkft, dkfa, fnli, fnlt, npa, risp, rau }; Options = alloptions.AsReadOnly(); }
public void TestToolCommands() { var crc = new CreateRelativeCommand(string.Empty, string.Empty); var cac = new CreateAbsoluteCommand(string.Empty, string.Empty); var uc = new UpdateCommand(string.Empty, string.Empty); var tmpFile = Path.GetTempFileName(); crc.Arguments.Add(tmpFile); crc.Arguments.Add("ShellifyTool.exe"); crc.Execute(); crc.Arguments[1] = @"c:\foo"; try { crc.Execute(); } catch (Exception e) { Assert.IsInstanceOfType(e, typeof(ArgumentException)); } crc.Arguments[1] = @"foo"; crc.Execute(); cac.Arguments.Add(tmpFile); cac.Arguments.Add("ShellifyTool.exe"); cac.Execute(); cac.Arguments[1] = @"foo"; cac.Execute(); cac.Arguments[1] = "."; cac.Execute(); var on = ProgramContext.Options.ToList().First(o => o.Tag == "name"); on.Arguments.Add(string.Empty); uc.Arguments.Add(tmpFile); uc.Options.Add(on); uc.Execute(); }