我对c#有点新鲜,所以如果有人请告诉我为什么我会收到错误
private void button2_Click(object sender, EventArgs e)
{
lblTaskManager.Text = null;
RegistryKey objRegistryKey = Registry.CurrentUser.CreateSubKey(
@"Software\Microsoft\Windows\CurrentVersion\Policies\System");
try
{
if (objRegistryKey.GetValue("DisableTaskMgr") == null)
objRegistryKey.SetValue("DisableTaskMgr", "1");
lblTaskManager.Text = ("Disabled");
else
objRegistryKey.DeleteValue("DisableTaskMgr");
objRegistryKey.Close();
lblTaskManager.Text = ("Enabled");
}
catch
{ }
}
}
}
错误发生在("已禁用");它表明a}是必需的,但添加它不会改变任何东西。而且我如何在将来避免这种错误。
答案 0 :(得分:2)
使用{}更正if:
if (objRegistryKey.GetValue("DisableTaskMgr") == null)
{
objRegistryKey.SetValue("DisableTaskMgr", "1");
lblTaskManager.Text = ("Disabled");
}
else
{
objRegistryKey.DeleteValue("DisableTaskMgr");
objRegistryKey.Close();
lblTaskManager.Text = ("Enabled");
}
不需要()但不应该损害您的代码。
也许你应该将 objRegistryKey.Close(); 移到try catch的finally。
答案 1 :(得分:0)
那么,
RegistryKey
创建放入using
并删除明确Close()
。{}
和if
之后添加else
。()
。try { ... } catch {}
(忽略抛出的所有异常),再也不会再使用此类代码了。这样的事情:
using (RegistryKey objRegistryKey = Registry.CurrentUser.CreateSubKey(
"@Software\Microsoft\Windows\CurrentVersion\Policies\System")) {
if (objRegistryKey.GetValue("DisableTaskMgr") == null) {
objRegistryKey.SetValue("DisableTaskMgr", "1");
lblTaskManager.Text = "Disabled";
}
else {
objRegistryKey.DeleteValue("DisableTaskMgr");
lblTaskManager.Text = "Enabled";
}
}