Exemple #1
0
        private int HandleMultipleFiles()
        {
            if (WriteToTheRegistry)
            {
                Console.WriteLine("ERROR, /write is only allowed with single files");
                return(10);
            }
            if (AllAccess)
            {
                Console.WriteLine("ERROR, /allaccess is only allowed in combination with /write");
                return(10);
            }
            if (!string.IsNullOrEmpty(ParamsFilename))
            {
                Console.WriteLine("ERROR, /params is only allowed in combination with /write");
                return(10);
            }
            for (int i = 0; i < Files.Count; ++i)
            {
                for (int j = i + 1; j < Files.Count; ++j)
                {
                    RegKeyEntry file1 = Files[i];
                    RegKeyEntry file2 = Files[j];
                    RegDiff     rc    = new RegDiff(file1, Filenames[i], file2, Filenames[j], Aliases);
                    if (!Quiet)
                    {
                        Console.WriteLine(rc.ToString());
                    }

                    RegFileExportOptions options = RegFileExportOptions.None;
                    if (NoEmptyKeys)
                    {
                        options |= RegFileExportOptions.NoEmptyKeys;
                    }

                    if (!string.IsNullOrEmpty(DiffFile))
                    {
                        Console.WriteLine("Writing {0}...", DiffFile);
                        CreateRegFileExporter(DiffFile).Export(rc.CreateDiffKeyEntry(), DiffFile, options);
                        Console.WriteLine();
                    }
                    if (!string.IsNullOrEmpty(MergeFile))
                    {
                        Console.WriteLine("Writing {0}...", MergeFile);
                        CreateRegFileExporter(MergeFile).Export(rc.CreateMergeKeyEntry(), MergeFile, options);
                        Console.WriteLine();
                    }
                }
            }
            return(0);
        }
Exemple #2
0
 /// <summary>
 /// Export the given registry key to a file
 /// </summary>
 /// <param name="key">Registry key previously imported (or constructed in memory)</param>
 /// <param name="filename">Filename to save the key in</param>
 /// /// <param name="options">Export options</param>
 public void Export(RegKeyEntry key, string filename, RegFileExportOptions options)
 {
     using (StreamWriter sw = new StreamWriter(File.Open(filename, FileMode.Create), FileEncoding))
     {
         try
         {
             Export(key, sw, options);
         }
         finally
         {
             sw.Close();
         }
     }
 }
        /// <summary>
        /// Export the key to a given output stream
        /// </summary>
        /// <param name="key">Existing key</param>
        /// <param name="file">Output stream</param>
        /// <param name="options">Export options</param>
        public void Export(RegKeyEntry key, TextWriter file, RegFileExportOptions options)
        {
            XmlWriterSettings settings = new XmlWriterSettings();
            settings.Indent = true;

            XmlWriter Writer = XmlWriter.Create(file, settings);
            Writer.WriteStartElement("registry");
            Writer.WriteAttributeString("version", "2");
           
            WriteXmlFileFormat(Writer, key);
            
            Writer.WriteEndElement();
            Writer.Close();
        }
 /// <summary>
 /// Export the key to a given file
 /// </summary>
 /// <param name="key">Existing key</param>
 /// <param name="filename">Name for .XML file</param>
 /// <param name="options">Export options</param>
 public void Export(RegKeyEntry key, string filename, RegFileExportOptions options)
 {
     using (StreamWriter sw = new StreamWriter(File.Open(filename, FileMode.Create), Encoding.UTF8))
     {
         try
         {
             Export(key, sw, options);
         }
         finally
         {
             sw.Close();
         }
     }
 }
Exemple #5
0
        /// <summary>
        /// Export the key to a given output stream
        /// </summary>
        /// <param name="key">Existing key</param>
        /// <param name="file">Output stream</param>
        /// <param name="options">Export options</param>
        public void Export(RegKeyEntry key, TextWriter file, RegFileExportOptions options)
        {
            XmlWriterSettings settings = new XmlWriterSettings();

            settings.Indent = true;

            XmlWriter Writer = XmlWriter.Create(file, settings);

            Writer.WriteStartElement("registry");
            Writer.WriteAttributeString("version", "2");

            WriteXmlFileFormat(Writer, key);

            Writer.WriteEndElement();
            Writer.Close();
        }
Exemple #6
0
        /// <summary>
        /// Write the content of this key to an output stream in .REG file format
        /// </summary>
        /// <param name="output">Output stream</param>
        /// <param name="options">Export options</param>
        public void WriteRegFileFormat(TextWriter output, RegFileExportOptions options)
        {
            List <string> names;
            bool          skipThisEntry = false;

            if ((options & RegFileExportOptions.NoEmptyKeys) == RegFileExportOptions.NoEmptyKeys)
            {
                skipThisEntry = Values.Keys.Count == 0;
                System.Console.WriteLine("skipThisEntry: {0}", skipThisEntry);
            }


            if (!skipThisEntry && !string.IsNullOrEmpty(Name))
            {
                if (RemoveFlag)
                {
                    output.WriteLine("[-{0}]", Path);
                }
                else
                {
                    output.WriteLine("[{0}]", Path);
                    if (DefaultValue != null)
                    {
                        DefaultValue.WriteRegFileFormat(output);
                    }

                    names = Values.Keys.ToList <string>();
                    names.Sort();
                    foreach (string name in names)
                    {
                        Values[name].WriteRegFileFormat(output);
                    }
                }
                output.WriteLine();
            }
            else
            {
                System.Console.WriteLine("SKIPPED");
            }

            names = Keys.Keys.ToList <string>();
            names.Sort();
            foreach (string name in names)
            {
                Keys[name].WriteRegFileFormat(output, options);
            }
        }
Exemple #7
0
 /// <summary>
 /// Export the given registry key to a text stream
 /// </summary>
 /// <param name="key">Registry key previously imported (or constructed in memory)</param>
 /// <param name="file">Output text stream</param>
 /// /// <param name="options">Export options</param>
 public void Export(RegKeyEntry key, TextWriter file, RegFileExportOptions options)
 {
     file.WriteLine(Header);
     file.WriteLine();
     key.WriteRegFileFormat(file, options);
 }
        /// <summary>
        /// Write the content of this key to an output stream in .REG file format
        /// </summary>
        /// <param name="output">Output stream</param>
        /// <param name="options">Export options</param>
        public void WriteRegFileFormat(TextWriter output, RegFileExportOptions options)
        {
            List<string> names;
            bool skipThisEntry = false;
            if ((options & RegFileExportOptions.NoEmptyKeys) == RegFileExportOptions.NoEmptyKeys)
            {
                skipThisEntry = Values.Keys.Count == 0;
                System.Console.WriteLine("skipThisEntry: {0}", skipThisEntry);
            }


            if (!skipThisEntry && !string.IsNullOrEmpty(Name))
            {
                if (RemoveFlag)
                {
                    output.WriteLine("[-{0}]", Path);
                }
                else
                {
                    output.WriteLine("[{0}]", Path);
                    if (DefaultValue != null)
                    {
                        DefaultValue.WriteRegFileFormat(output);
                    }

                    names = Values.Keys.ToList<string>();
                    names.Sort();
                    foreach (string name in names)
                    {
                        Values[name].WriteRegFileFormat(output);
                    }
                }
                output.WriteLine();
            }
            else System.Console.WriteLine("SKIPPED");

            names = Keys.Keys.ToList<string>();
            names.Sort();
            foreach (string name in names)
            {
                Keys[name].WriteRegFileFormat(output, options);
            }
        }
Exemple #9
0
        private int HandleSingleFile()
        {
            RegKeyEntry regKeyEntry = Files[0];

            if (!string.IsNullOrEmpty(MergeFile))
            {
                Console.WriteLine("Writing {0}...", MergeFile);

                RegFileExportOptions options = RegFileExportOptions.None;
                if (NoEmptyKeys)
                {
                    options |= RegFileExportOptions.NoEmptyKeys;
                }

                CreateRegFileExporter(MergeFile).Export(regKeyEntry, MergeFile, options);
                Console.WriteLine();
            }
            if (WriteToTheRegistry)
            {
                RegEnvReplace env = new RegEnvReplace();
                if (!string.IsNullOrEmpty(ParamsFilename))
                {
                    if (!File.Exists(ParamsFilename))
                    {
                        Console.WriteLine("ERROR, /params file '{0}' not found", ParamsFilename);
                        return(10);
                    }
                    try
                    {
                        if (ParamsFilename.EndsWith(".ini", StringComparison.OrdinalIgnoreCase))
                        {
                            env.ReadIniFile(ParamsFilename);
                        }
                        else if (ParamsFilename.EndsWith(".xml", StringComparison.OrdinalIgnoreCase))
                        {
                            env.ReadXmlFile(ParamsFilename);
                        }
                        else
                        {
                            Console.WriteLine("ERROR, /params file '{0}' has an unsupported extension (only '.xml' and '.ini' are allowed)", ParamsFilename);
                            return(10);
                        }
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine("ERROR, unable to read /params file '{0}'", ParamsFilename);
                        Console.WriteLine(e.Message);
                        return(10);
                    }
                }
                env.MergeEnvironmentVariables();
                RegistryWriteOptions registryWriteOptions = RegistryWriteOptions.Recursive;
                if (AllAccess)
                {
                    registryWriteOptions |= RegistryWriteOptions.AllAccessForEveryone;
                }
                regKeyEntry.WriteToTheRegistry(registryWriteOptions, env, CurrentRegistryView);
            }
            else if (AllAccess)
            {
                Console.WriteLine("ERROR, /allaccess is only allowed in combination with /write");
                return(10);
            }
            else if (!string.IsNullOrEmpty(ParamsFilename))
            {
                Console.WriteLine("ERROR, /params is only allowed in combination with /write");
                return(10);
            }

            return(0);
        }
 /// <summary>
 /// Export the given registry key to a text stream
 /// </summary>
 /// <param name="key">Registry key previously imported (or constructed in memory)</param>
 /// <param name="file">Output text stream</param>
 /// /// <param name="options">Export options</param>
 public void Export(RegKeyEntry key, TextWriter file, RegFileExportOptions options)
 {
     file.WriteLine(Header);
     file.WriteLine();
     key.WriteRegFileFormat(file, options);
 }