2014-05-23 38 views
1

我想使用c#一次性备份所有注册表项。我搜索它,但为特定的注册表项备份提供很多提示,但不是所有的密钥。因此,如果任何人知道如何备份所有注册表项或任何方法来导出所有注册表在C#请告诉我。由于如何在c#中备份所有Windows注册表项?

+2

你可能需要掏出来'regedit'做的工作适合你。但是,“全部”注​​册表键的含义是什么? 'HKEY_CURRENT_USER'下的所有东西? 'HKEY_LOCAL_MACHINE'下的所有内容(这会引发有关权限的问题)?你想备份当前用户以外的* other *用户的注册表吗? –

+0

http://stackoverflow.com/questions/13386017/fast-way-to-read-all-registry-values – paul

+0

是的,我正在采取除当前用户以外的所有注册表项的备份。 –

回答

2

更多的东西搜索后我发现两个解决方案第一个是a link 而第二个是使用SendKeys。现在这里是我的代码导出所有注册表项。 但是,首先你必须以管理员身份启动你的visual studio,然后启动regedit然后运行这段代码。

Process[] processlist = Process.GetProcesses(); string title = ""; foreach (Process process in processlist) { title = process.MainWindowTitle; if (title == @"Registry Editor" && process.MainWindowHandle != IntPtr.Zero) { SetForegroundWindow(process.MainWindowHandle); Thread.Sleep(2000); SendKeys.SendWait("%+F+E"); Thread.Sleep(500); SendKeys.SendWait("%+A"); Thread.Sleep(500); SendKeys.SendWait("%+S"); Thread.Sleep(500); SendKeys.SendWait("TEST"); Thread.Sleep(500); SendKeys.SendWait("%+S"); Thread.Sleep(1000); SendKeys.SendWait("%+{TAB}"); break; } }

,支持的功能有

[DllImport("USER32.DLL")] public static extern bool SetForegroundWindow(IntPtr hWnd);