此行中的sk1.DeleteValue(KeyName)期望 [英] sk1.DeleteValue(KeyName) expection in this line

查看:56
本文介绍了此行中的sk1.DeleteValue(KeyName)期望的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

  public   bool  DeleteKey(尝试
{
// 设置
RegistryKey rk = baseRegistryKey;
RegistryKey sk1 = rk.CreateSubKey(subKey);
// 如果RegistrySubKey不存在-> (是)
如果(sk1 == )
返回 其他
sk1.DeleteValue(KeyName);

返回 ;
}
捕获(例外EX)
{
//  AAAAAAAAAAARGH,一个错误!
                MessageBox.Show(EX.ToString());
返回 ;
}
} 





为什么这条线能给人期望?
何时,我从MSDN
中删除注册表

解决方案

RegistryKey.CreateSubKey()方法的定义中的oracle9i

创建新的子项或打开现有的子项.字符串subKey不区分大小写.



因此,当找不到所需的子项并且obj sk1永远不会返回null时,RegistryKey sk1 = rk.CreateSubKey(subKey);为您创建一个新密钥.现在,当您尝试删除新创建的子项下的子项时,会出现错误!

如果只希望在子项退出时删除,请使用RegistryKey.OpenSubKey(String, Boolean)方法.

RegistryKey.OpenSubKey方法(字符串,布尔值) [ ^ ]


public bool DeleteKey(string KeyName)
		{
			try
			{
				// Setting
				RegistryKey rk = baseRegistryKey ;
				RegistryKey sk1 = rk.CreateSubKey(subKey);
				// If the RegistrySubKey doesn't exists -> (true)
				if ( sk1 == null )
					return true;
				else
					sk1.DeleteValue(KeyName);

				return true;
			}
			catch (Exception EX)
			{
				// AAAAAAAAAAARGH, an error!
                MessageBox.Show(EX.ToString()); 
				return false;
			}
		}





why this line give expection?
when,I delete oracle9i in registry

解决方案

Definition for RegistryKey.CreateSubKey() method from MSDN

Creates a new subkey or opens an existing subkey. The string subKey is not case-sensitive.



So, RegistryKey sk1 = rk.CreateSubKey(subKey); creates a new key for you when the desired subkey is not found and the obj sk1 would never return null. Now, when you try to delete a subkey under the newly created sub key you get an error!

If you wish to delete only when the subkey exits then use the RegistryKey.OpenSubKey(String, Boolean) method.

RegistryKey.OpenSubKey Method (String, Boolean)[^]


这篇关于此行中的sk1.DeleteValue(KeyName)期望的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆