我正在从事一个项目,该项目将允许我从 Windows 7 PC 中删除注册表项。具体来说,我正在尝试制作一个程序,允许我通过 ProfileList 键从机器中删除配置文件。我的问题是无论我尝试什么,在我开始随机删除内容之前,我似乎都无法正确读取我想要执行的 key 。我的代码是
RegistryKey OurKey = Registry.LocalMachine;
OurKey = OurKey.OpenSubKey(@"SOFTWARE\Microsoft\WindowsNT\CurrentVersion\ProfileList", true);
foreach (string Keyname in OurKey.GetSubKeyNames())
{
MessageBox.Show(Keyname);
}
此代码运行但不返回任何内容(无消息框)。有什么想法为什么不呢?
编辑:
感谢大家,我得到了要加载的顶级 key ,但它只显示文件夹/ key 名称(例如:S-1-5-21-3794573037-2687555854-1483818651-11661)我需要的是阅读该文件夹下的键以查看 ProfilePath 是什么。有没有更好的方法来解决这个问题?
最佳答案
正如 Lloyd 所指出的,您的路径应该使用“Windows NT”。如有疑问,请始终使用 regedit
手动检查注册表。
编辑:要进行编辑,您可以简单地在找到的键上GetValue
,下面的代码应该可以满足您的需求:
RegistryKey OurKey = Registry.LocalMachine;
OurKey = OurKey.OpenSubKey(@"SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList", true);
foreach (string Keyname in OurKey.GetSubKeyNames())
{
RegistryKey key = OurKey.OpenSubKey(Keyname);
MessageBox.Show(key.GetValue("KEY_NAME").ToString()); // Replace KEY_NAME with what you're looking for
}
关于c# - 在 C# 中查找注册表项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13417955/