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); }
/// <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(); } } }
/// <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); } }
/// <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); } }
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); }