Пример #1
0
        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();
        }
Пример #2
0
        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();
        }