--来自 https://blog.csdn.net/wenchangren/article/details/751863
using System; using Microsoft.Win32; using System.Diagnostics; namespace IVR { /// <summary> /// Class1 的摘要说明。 /// </summary> class Class1 { /// <summary> /// 应用程序的主入口点。 /// </summary> [STAThread] static void Main(string[] args) { // // TODO: 在此处添加代码以启动应用程序 // RegistryKey key = Registry.LocalMachine.OpenSubKey("SOFTWARE", true); //HKEY_LOCAL_MACHINESOFTWARE 并且具有可写权限 Access_Registry(key, "Adobe"); //Adobe是自己要对某个程序注册表主目录
Access_Registry(key, "Adobe\Acrobat Distiller\DC"); //Adobe是自己要对某个程序注册表主目录
//HKEY_LOCAL_MACHINESOFTWAREAdobeAcrobat DistillerDC
//RunFromLocalDisk
} private static void Access_Registry(RegistryKey keyR, String str) { RegistryKey aimdir = keyR.OpenSubKey(str, true); //HKEY_LOCAL_MACHINESOFTWAREAdobe 并且有可写权限 string[] subvalueNames = aimdir.GetValueNames(); //子项下所有子项值名称 foreach (string valueName in subvalueNames) { Console.WriteLine("==" + valueName); //输出其下的值 } string[] subkeyNames = aimdir.GetSubKeyNames();//所有子项名称 foreach (string keyName in subkeyNames) { Access_Registry(aimdir, keyName); } Console.ReadLine(); } } }
--来自https://blog.csdn.net/is2120/article/details/7530170
//z 2012-5-3 16:51:44 PM IS2120@CSDN 如果欲修改值,打开时如下: // RegistryKey skms = SoftwareKey.OpenSubKey(RegistryKeyName, true); using System; using System.Collections.Generic; using System.Linq; using System.Text; using Microsoft.Win32; namespace regEnum { class Program { static void Main(string[] args) { string regPath = @"Control Panel"; keyWalker walker = new keyWalker(); walker.enumerateKeysRecurse(regPath); Console.ReadKey(); } } class keyWalker { public void enumerateKeysRecurse(string keyPath) { RegistryKey HKLM = Registry.CurrentUser; RegistryKey RegKey = HKLM.OpenSubKey(keyPath); string[] subKeys = RegKey.GetSubKeyNames(); foreach (string subKey in subKeys) { string fullPath = keyPath + "\" + subKey; this.enumerateKeysRecurse(fullPath); Console.WriteLine(fullPath); } } } }