private void btnLogin_Click(object sender, EventArgs e)
        {
            //读注册表 
            RegistryKey   regRead;
            //读取HKEY_CURRENT_USER主键里的Software子键下名为“Test”的子键
            regRead=   Registry.CurrentUser.OpenSubKey( "Software\\login ",true);
            if(regRead==null)   //如果该子键不存在 
            {
                MessageBox.Show("没有保存账号!");
            } 
            else 
            {                
                HtmlElement btnSubmit = webBrowser1.Document.All["staticsubmitid"];
                HtmlElement tbUserid = webBrowser1.Document.All["staticusernameid"];
                HtmlElement tbPasswd = webBrowser1.Document.All["staticpasswordid"];               
                if (tbUserid == null || tbPasswd == null || btnSubmit == null)
                    return;
                object nameobj = regRead.GetValue("name");     //读取“Name”项的值
                object passobj = regRead.GetValue("pass");     //读取“Name”项的值
                //label6.Text = nameobj.ToString();
                tbUserid.SetAttribute("string",nameobj.ToString());
                tbPasswd.SetAttribute("value",passobj.ToString());
                btnSubmit.InvokeMember("Click");                
            }
            //关闭该对象
            regRead.Close();
        }          
总是提示 
   {"未将对象引用设置到对象的实例。"}
这是为什么?
如果改为 tbUserid.SetAttribute("string",(string)nameobj);
                tbPasswd.SetAttribute("value",(string)passobj);
获取到的是空值。

解决方案 »

  1.   

    注册表是如下的
    名称 类型 数据
    name REG_SZ 1111
    pass REG_SZ  22222
      

  2.   

    object nameobj = regRead.GetValue("name");这里就已经是空的了
      

  3.   

    我是在另外窗口写入注册表的。。查看注册表确实写入了。。
    但是这页读取不到。。
    这是写入的代码
    RegistryKey regWrite;
                //往HKEY_CURRENT_USER主键里的Software子键下写一个名为“Test”的子键 
                //如果Test子键已经存在系统会自动覆盖它 
                regWrite = Registry.CurrentUser.CreateSubKey( "Software\\login ");
                //往Test子键里添两条数据项,一条名为 "Name ",另一条名为 "Sex "
                //值分别是 "luolie ", "男 " 
                regWrite.SetValue( "Name ",textBox1.Text); 
                regWrite.SetValue( "Pass ", textBox2.Text); 
                //关闭该对象 
                regWrite.Close(); 
      

  4.   

    RegistryKey regWrite;     
               
                regWrite = Registry.CurrentUser.CreateSubKey( "Software\\login ");           
                regWrite.SetValue( "Name ",textBox1.Text); 
                regWrite.SetValue( "Pass ", textBox2.Text); 
                //关闭该对象 
                regWrite.Close(); 
      

  5.   

    觉得还是可能写入和读取的位置不对。
    你写在CurrentUser下,写入和读取是在同一个账户下吗?另外,从msdn上来看value的名字不是case-sensitive的。
    但是看你的写入时有空格的,
    regWrite.SetValue( "Name ",textBox1.Text); 把空格删掉试一试。