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; }