• 读写注册表


    使用
    RegistryManager rwRgs
    =new RegistryManager() ;
            
    private void button4_Click(object sender, System.EventArgs e)
            
    {
                
    string str1=rwRgs.ReadSettings("myName") ;
                
    if(str1!="")
                    MessageBox.Show(str1) ;
            
            }



            
    private void button5_Click(object sender, System.EventArgs e)
            
    {
                
    if(rwRgs.SaveSettings("myName","furenjun"+System.DateTime.Now.ToString()))
                    MessageBox.Show(
    "save Success") ;

      
            }


            
    private void button6_Click(object sender, System.EventArgs e)
            
    {
                
    if(rwRgs.DeleteValue("myName"))
                    MessageBox.Show(
    "del Success") ;
            }


            
    private void button7_Click(object sender, System.EventArgs e)
            
    {
                 
    if(rwRgs.CountValue() >0)
                     MessageBox.Show (rwRgs.CountValue().ToString() );
            }


            
    private void button8_Click(object sender, System.EventArgs e)
            
    {

                
    string[] str1=rwRgs.GetSubKeyValueNames();
                str1
    =rwRgs.GetMySubKeyNames();  
                
    if(str1!=null)
                
    {
                    
                    
    int i=str1.Length;
                    MessageBox.Show(i.ToString() ) ;
                    
    string s1="";
                    
    for(int j=0;j<i;j++)
                    
    {
                        s1
    +=str1[j]+" ";
                    }

                    MessageBox.Show(s1.ToString() ) ;

                }

            }


            
    private void button9_Click(object sender, System.EventArgs e)
            
    {
                MessageBox.Show ( Application.ProductName);
            }
    using System;
    using System.Windows.Forms;
    using Microsoft.Win32;
    namespace ReadWriteRegiest
    {
        
    /// <summary>
        
    /// RegistryManager 的摘要说明。
        
    /// </summary>

        public class RegistryManager
        
    {
            
    public RegistryManager()
            
    {
                
    //
                
    // TODO: 在此处添加构造函数逻辑
                
    //
            }


            
    string myKeyStr="frj";
            
    string mySubKeyStr="frjChild";
            
    public string myKey
            
    {
                
    get{return myKeyStr;}
                
    set{myKeyStr=value;}

            }


            
    public string mySubKey
            
    {
                
    get{return mySubKeyStr;}
                
    set{mySubKeyStr=value;}

            }

            
            
    /// <summary>
            
    /// 保存键值
            
    /// </summary>
            
    /// <param name="mySetValueName"></param>
            
    /// <param name="mySetValue"></param>
            
    /// <returns></returns>

            public  bool SaveSettings(string mySetValueName,string mySetValue)
            
    {
                

                RegistryKey softwareKey
    =Registry.LocalMachine.OpenSubKey("Software\\Microsoft\\Windows",true);
                RegistryKey frjKey
    =softwareKey.CreateSubKey(myKey) ;
                RegistryKey frjSubKey
    =frjKey.CreateSubKey(mySubKey) ;
                
    try
                
    {    
                    frjSubKey.SetValue(mySetValueName,mySetValue) ;
                }

                
    catch(System.Exception e1)
                
    {
                    MessageBox.Show(e1.ToString(),
    "保存键值错误",MessageBoxButtons.OK ,MessageBoxIcon.Information );

                    frjSubKey.Close();
                    frjKey.Close();
                    
    return false;
                }


                frjSubKey.Close();
                frjKey.Close();
                
    return true;
            }



            
    /// <summary>
            
    /// 读键值
            
    /// </summary>
            
    /// <param name="mySetValueName"></param>
            
    /// <returns></returns>

            public string  ReadSettings(string mySetValueName)
            
    {
                
    string ReadValueStr="";
                
                RegistryKey softwareKey
    =Registry.LocalMachine.OpenSubKey("Software\\Microsoft\\Windows",true);
                RegistryKey frjKey
    =softwareKey.OpenSubKey(myKey) ;
                
    if(frjKey==null)
                
    {
                    frjKey.Close();
                    
    return ReadValueStr;
                }

                RegistryKey frjSubKey
    =frjKey.OpenSubKey (mySubKey) ;
                
    try
                
    {    
                    
    if(frjSubKey==null)
                    
    {
                        frjSubKey.Close();
                        frjKey.Close();
                        
    return ReadValueStr;
                    }

                    ReadValueStr
    =frjSubKey.GetValue(mySetValueName).ToString()  ;
                }

                
    catch(System.Exception e1)
                
    {
                    MessageBox.Show(e1.ToString(),
    "读注册表错误",MessageBoxButtons.OK ,MessageBoxIcon.Information );

                }

                
                frjSubKey.Close();
                frjKey.Close();
                
    return ReadValueStr;
                

            }



            
    /// <summary>
            
    /// 删除键值
            
    /// </summary>
            
    /// <param name="mySetValueName"></param>
            
    /// <returns></returns>

            public bool DeleteValue(string mySetValueName)
            
    {
                
                
                
    //                RegistryKey MyReg = Registry.CurrentUser.OpenSubKey
                
    //                ("SOFTWARE\\SomeCompany\\SomeApp\\SomeVer", true);

                RegistryKey softwareKey
    =Registry.LocalMachine.OpenSubKey("Software\\Microsoft\\Windows",true);
                
                RegistryKey frjKey
    =softwareKey.OpenSubKey(myKey) ;
                
    if(frjKey==null)
                
    {
                    frjKey.Close();
                    
    return false;
                }

                RegistryKey frjSubKey
    =frjKey.OpenSubKey (mySubKey) ;
                
    try
                
    {    
                    
    if(frjSubKey==null)
                    
    {
                        frjSubKey.Close();
                        frjKey.Close();
                        
                        
    return false;
                    }

                    
    //frjSubKey.DeleteSubKeyTree(mySubKey) ; //递归删除子项和任何子级子项。字符串 subKey 不区分大小写。
                    
    //                备注
                    
    //必须具有适当权限才能删除子项及其目录树。
                    
    //警告   删除特定的项将移除目录树中该项下的所有项,并且不提供任何警告。
                    
    //如果想仅在子项没有子级子项时才删除该子项,请改用 DeleteSubKey。

                    frjSubKey.DeleteValue(mySetValueName,
    true);


                }

                
    catch(System.Exception e1)
                
    {
                    MessageBox.Show(e1.ToString(),
    "删除键值出错",MessageBoxButtons.OK ,MessageBoxIcon.Information );
                    
                    frjSubKey.Close();
                    frjKey.Close();
                    
    return false;

                }

                
                frjSubKey.Close();
                frjKey.Close();
                
    return true;
                
            }



            
    /// <summary>
            
    /// 检索项中值的计数
            
    /// </summary>
            
    /// <returns></returns>

            public int  CountValue( )
            
    {
                
    int i=0;
                RegistryKey softwareKey
    =Registry.LocalMachine.OpenSubKey("Software\\Microsoft\\Windows",true);
                RegistryKey frjKey
    =softwareKey.OpenSubKey(myKey) ;
                
    if(frjKey==null)
                
    {
                    frjKey.Close(); 
                    
    return i;
                }

                    
                RegistryKey frjSubKey
    =frjKey.OpenSubKey (mySubKey) ;
                
    try
                
    {    
                    
    if(frjSubKey==null)
                    
    {
                        frjSubKey.Close();
                        frjKey.Close();
                        
    return i;
                    }

                    
                }

                
    catch(System.Exception e1)
                
    {
                    MessageBox.Show(e1.ToString(),
    "统计检索项中值出错",MessageBoxButtons.OK ,MessageBoxIcon.Information );
                    frjSubKey.Close();
                    frjKey.Close();
                    
    return 0;

                }

                
                i
    =frjSubKey.ValueCount;  
                frjSubKey.Close();
                frjKey.Close();

                
    return i;
            }


             

            
    /// <summary>
            
    /// 检索与此项值关联的所有值名称的字符串数组
            
    /// </summary>
            
    /// <returns></returns>

            public string[] GetSubKeyValueNames()
            
    {
                
    string[] ValueNames=null
                RegistryKey softwareKey
    =Registry.LocalMachine.OpenSubKey("Software\\Microsoft\\Windows",true);
                RegistryKey frjKey
    =softwareKey.OpenSubKey(myKey) ;
                
    if(frjKey==null)
                
    {
                    frjKey.Close(); 
                    
    return ValueNames;
                }

                    
                RegistryKey frjSubKey
    =frjKey.OpenSubKey (mySubKey) ;
                
    try
                
    {    
                    
    if(frjSubKey==null)
                    
    {
                        frjSubKey.Close();
                        frjKey.Close();
                        
    return ValueNames;
                    }

                    ValueNames
    =frjSubKey.GetValueNames() ;
                }

                
    catch(System.Exception e1)
                
    {
                    MessageBox.Show(e1.ToString(),
    "统计检索项中值出错",MessageBoxButtons.OK ,MessageBoxIcon.Information );
                    frjSubKey.Close();
                    frjKey.Close();
                    
    return ValueNames;

                }

                
                  
                frjSubKey.Close();
                frjKey.Close();

                
    return ValueNames;

            }



            
            
    /// <summary>
            
    /// To obtain a list of all the subkeys (child keys) that exist within your present RegistryKey object
            
    /// </summary>
            
    /// <returns></returns>

            public string[] GetMySubKeyNames()
            
    {
                
    string[] mySubKeyNames=null
                RegistryKey softwareKey
    =Registry.LocalMachine.OpenSubKey("Software\\Microsoft\\Windows",true);
                RegistryKey frjKey
    =softwareKey.OpenSubKey(myKey) ;
                
    if(frjKey==null)
                
    {
                    frjKey.Close(); 
                    
    return mySubKeyNames;
                }

                mySubKeyNames
    =frjKey.GetSubKeyNames();  

                RegistryKey frjSubKey
    =frjKey.OpenSubKey (mySubKey) ;
                
    try
                
    {    
                    
    if(frjSubKey==null)
                    
    {
                        frjSubKey.Close();
                        frjKey.Close();
                        
    return mySubKeyNames;
                    }

                    
    //mySubKeyNames=frjSubKey.GetSubKeyNames()  ;
                }

                
    catch(System.Exception e1)
                
    {
                    MessageBox.Show(e1.ToString(),
    "统计检索项中值出错",MessageBoxButtons.OK ,MessageBoxIcon.Information );
                    frjSubKey.Close();
                    frjKey.Close();
                    
    return mySubKeyNames;

                }

                
                  
                frjSubKey.Close();
                frjKey.Close();

                
    return mySubKeyNames;

            }


            
    public bool AutoRunProgram()
            
    {
                
                
    string Pname=Application.ProductName;
                
    string ProgramNameAndPath= Application.StartupPath+@"\"+Pname+".exe";
                RegistryKey softwareKey
    =Registry.LocalMachine.OpenSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Run",true);
                
    try
                
    {
                    
    if(softwareKey==null)
                    
    {
                        
    //如果子键不存在则创建之
                        softwareKey=Registry.LocalMachine.CreateSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Run");

                    }

                    
    string[] CheckPname=softwareKey.GetValueNames(); 
                    
    int i=CheckPname.Length;
    //                MessageBox.Show(i.ToString() ) ;
                    bool find=false;
                    
    int j=0;
                    
    while(j<&& !find)
                    
    {
                        
    if(CheckPname[j]==Pname)
                        
    {    
                            find
    =true;
    //                        MessageBox.Show(j.ToString() +"   "+CheckPname[j] );
                        }

                        j
    ++;

                    }

                     
                    
    if(!find)   
                    
    {
                        
    //在注册表中设置自动启动程序
                        softwareKey.SetValue(Pname, ProgramNameAndPath) ;
                    }

                    
    else
                    
    {
                        
    if(softwareKey.GetValue(Pname).ToString() !=ProgramNameAndPath )
                            softwareKey.SetValue(Pname, ProgramNameAndPath) ;
    //                    else
    //                        MessageBox.Show("已经有了") ;
                    }

                }

                
    catch
                
    {
                    softwareKey.Close();  
                    
    return false;
                }

                softwareKey.Close(); 
                
    return true;
            }


        }

    }

  • 相关阅读:
    spring boot——集成mongodb——mongodb安装
    spring boot——集成JPA——入门示例001
    spring boot——集成swagger——入门示例
    spring boot——集成redis——序列化——stringRedisTemplate与redisTemplate=========JdkSerializationRedisSerializer与StringRedisSerializer了解
    spring boot——集成redis——示例参考——stringRedisTemplate与redisTemplate
    PhpSpreadsheet导出科学记数转成字符串
    测试大纲
    毕业设计进度对照表
    TS ES6 VUE 相关
    类加载器隔离朴实案例(三)logback实战加密
  • 原文地址:https://www.cnblogs.com/furenjun/p/387806.html
Copyright © 2020-2023  润新知