注册表设置例子

using System;
using Microsoft.Win32;

namespace RegistryProc
{
 /// <summary>
 /// RegistryProc
 /// </summary>
 public class RegistryProc
 {
  #region parameter define
  private const string strAutoKey = @"HKEY_CURRENT_USER";
  private const string strSubKey = @"/Software/Microsoft/Windows/CurrentVersion/Run";
  private const char chrSeparator = '//';
  #endregion

  #region
  /// <summary>
  /// RegistryProc
  /// </summary>
  public RegistryProc()
  {
   SetRegKey("myexe","c://text.exe",strSubKey,Registry.LocalMachine);
   DeleteRegKey("myexe",strSubKey,Registry.LocalMachine);
  }
  #endregion

  #region SetRegKey
  /// <summary>
  /// Set Registry Key
  /// </summary>
  /// <param name="strKeyName"></param>
  /// <param name="strFilePath"></param>
  /// <param name="strSubKey"></param>
  /// <param name="RegKey"></param>
  /// <returns></returns>
  private bool SetRegKey(string strKeyName,string strFilePath,string strSubKey,RegistryKey RegKey)
  {
   try
   {
    RegistryKey runKey=GetRunKey(strSubKey,RegKey);
    runKey.SetValue(strKeyName,strFilePath);
    runKey.Close();
   }
   catch
   {
    return false;
   }
   return true;
  }
  #endregion

  #region DeleteRegKey
  /// <summary>
  /// Delete Registry Key
  /// </summary>
  /// <param name="strKeyName"></param>
  /// <param name="strSubKey"></param>
  /// <param name="RegKey"></param>
  /// <returns></returns>
  private bool DeleteRegKey(string strKeyName,string strSubKey,RegistryKey RegKey)
  {
   try
   {
    RegistryKey runKey=GetRunKey(strSubKey,RegKey);
    //circle in Values belong to key
    foreach (string strTemp in runKey.GetValueNames())
    {
     //find the key want to be delete
     if (strTemp == strKeyName)
     {
      runKey.DeleteValue(strTemp);
      break;
     }
    }
    runKey.Close();
   }
   catch
   {
    return false;
   }
   return true;
  }
  #endregion

  #region GetRunKey
  /// <summary>
  /// get the last sub key with recursion
  /// </summary>
  /// <param name="strKeyTree">subkey tree</param>
  /// <param name="rgkParent">Parent registrykey</param>
  /// <returns></returns>
  private RegistryKey GetRunKey(string strKeyTree,RegistryKey rgkParent)
  {
   RegistryKey rgkChild;
   string strChild = string.Empty;
   string strRemain = string.Empty;

   //has one / char, or not
   if(strKeyTree .IndexOf (chrSeparator )!=strKeyTree .LastIndexOf (chrSeparator ))
   {
    //remove / in the head
    strKeyTree = strKeyTree.Substring(1, strKeyTree.Length - 1);
    //get first sub key name
    strChild=strKeyTree .Substring (0,strKeyTree.IndexOf (chrSeparator ));
    //get the first sub key
    rgkChild = rgkParent.OpenSubKey(strChild);
    //keep the remain part of strKeyTree except first part
    strRemain = strKeyTree.Substring(strKeyTree.IndexOf(chrSeparator), strKeyTree.Length - strKeyTree.IndexOf(chrSeparator));

    return GetRunKey(strRemain, rgkChild);

   }
   else //only the last sub tree key
   {
    strKeyTree = strKeyTree.Substring(1, strKeyTree.Length - 1);
    rgkChild = rgkParent.OpenSubKey(strKeyTree,true);
    return rgkChild;
   }
  }
  #endregion
 }
}
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值