我有这个代码:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Registry.CurrentUser.OpenSubKey(@"HKEY_CURRENT_USER\software\google");
}
}
form1
只有一个按钮。
我想通过单击按钮打开HKEY_CURRENT_USER\software\google\
。
但是按钮在点击后什么也不做,为什么?
3条答案
按热度按时间nbysray51#
你的代码打开一个对象并返回它。如果你把这个对象赋值给一个像这样的变量:
var key = Registry.CurrentUser.OpenSubKey(@"HKEY_CURRENT_USER\software\google");
你可以在赋值后修改它。
如果你想打开regedit工具,你应该使用以下代码:
Process.Start("regedit.exe")
pftdvrlh2#
在编程中,一般有两种类型的函数:
有副作用的函数实际上做的事情,没有副作用的函数返回的东西。
在本例中,
OpenSubKey
返回RegistryKey
。你必须对它做点什么,否则你的按钮按下没有效果。原因是,你的函数调用没有副作用。
pengsaosao3#
你的代码有两个问题:
1.即使你对从函数中获取的值做了一些事情,它也不会工作,原因很简单:
当您这样做时:
Registry.CurrentUser.OpenSubKey(@"HKEY_CURRENT_USER\software\google");
您正在打开当前用户项的子项,并且正在当前用户中搜索另一个当前用户;这意味着你实际上正在寻找:
HKEY_CURRENT_USER\HKEY_CURRENT_USER\software\google
你需要做的是搜索:
@"software\google"
例如:
1.你误解了“开放”的含义;打开并不意味着它将打开注册表编辑器窗口,它只是意味着在后台,您的应用将打开该键以供进一步使用。
如果我理解正确的话,你希望注册表编辑器窗口打开,并自动导航到Google键。
为此,您可以使用以下技巧:
将regedit的LastKey键设置为Google路径,然后一旦打开regedit,它就会自动导航到那里: