嘿伙计,所以我试图在用户按下 Windows + R 键时删除运行历史记录,因此没有历史记录我为此设置了方法,您将看到参数HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU
但是我担心我会删除错误的项目,这是我的代码:
//this method will clear the run history from the registry
private void ClearRunHistory(string RegRunHistoryDirectory)
{
using (RegistryKey key = Registry.CurrentUser.OpenSubKey(RegRunHistoryDirectory, true))
{
if (key == null)
{
//if key doesnt exist then do nothing
}
else
{
key.DeleteValue(@"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU");
}
}
}
答案 0 :(得分:1)
在删除值中,您只需要输入值,而不是整个路径。例如,如果要删除testsettings / id中的id,则在key.DeleteValue中只需要输入" id"。 这里适用相同的逻辑。你想删除什么? RegRunHistoryDirectory下的值或所有值?
答案 1 :(得分:0)
如果要删除运行历史记录,则要删除注册表项@"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU"
的每个值
减去(默认)一个。
(幸运的是,当你枚举它时,框架会忽略默认框架)
在您的代码中,您将整个密钥路径传递给key.DeleteValue()
,这是错误的。
正确的方法是首先枚举密钥的所有值然后删除,这是一个例子:
using (RegistryKey key = Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU", true))
{
string[] values = key.GetValueNames();
foreach (var item in values)
{
key.DeleteValue(item);
}
}
答案 2 :(得分:0)
嘿伙计们只是想说我修好了这个:)
使用key.DeleteValue()