2014-05-23 57 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);