private async Task CopyRegistry(FileInfo regFile, DirectoryInfo targetDir) { var writer = new RegConverter(); var pathAll = Path.Combine(targetDir.FullName, "Registry.dat"); var pathUser = Path.Combine(targetDir.FullName, "User.dat"); var pathHkcr = Path.Combine(targetDir.FullName, "UserClasses.dat"); await writer.ConvertFromRegToDat(regFile.FullName, pathAll).ConfigureAwait(false); await writer.ConvertFromRegToDat(regFile.FullName, pathUser, RegistryRoot.HKEY_CURRENT_USER).ConfigureAwait(false); await writer.ConvertFromRegToDat(regFile.FullName, pathHkcr, RegistryRoot.HKEY_CLASSES_ROOT).ConfigureAwait(false); }
public void Convert() { var tempReg = System.Guid.NewGuid().ToString("N") + ".reg"; var tempDir = "reg-out-" + System.Guid.NewGuid().ToString("N"); Directory.CreateDirectory(tempDir); try { var mfn = typeof(TestConversion).Assembly.GetManifestResourceNames().First(a => a.EndsWith("team.reg")); using (var mf = typeof(TestConversion).Assembly.GetManifestResourceStream(mfn)) { using (var fs = System.IO.File.OpenWrite(tempReg)) { // ReSharper disable once PossibleNullReferenceException mf.CopyTo(fs); fs.Flush(true); } } var regConv = new RegConverter(); var regPars = new RegFileParser(); regPars.Parse(Path.Combine(tempReg)); regConv.ConvertFromRegToDat(tempReg, Path.Combine(tempDir, "Registry.dat"), RegistryRoot.HKEY_LOCAL_MACHINE).GetAwaiter().GetResult(); regConv.ConvertFromRegToDat(tempReg, Path.Combine(tempDir, "UserClasses.dat"), RegistryRoot.HKEY_CLASSES_ROOT).GetAwaiter().GetResult(); regConv.ConvertFromRegToDat(tempReg, Path.Combine(tempDir, "User.dat"), RegistryRoot.HKEY_CURRENT_USER).GetAwaiter().GetResult(); } finally { ExceptionGuard.Guard(() => { System.IO.Directory.Delete(tempDir, true); System.IO.File.Delete(tempReg); }); } }