隐藏

C#操作注册表 实现快捷启动程序

发布:2014/10/18 2:45:37作者:管理员 来源:本站 浏览次数:1391

Rar大家都知道吧,它在运行栏中输入“Winrar”就可启动了。怎么回事呢,我们用Visual 开发C#程序能不能也实现这样的功能呢?答案是肯定的!
在 此之前,我们需要先了解Rar的启动是怎么回事:在Windows的注册表中,有一项是专门保存这样的信息的,它就负责在运行中输入命令启动程序。这个注 册表项在:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths  。它的子项都是可以在运行中启动的。
知道了这点,我们就可以开始了,利用Visual 开发C#程序来操作Windows注册表,来实现这一效果:
这是我做好的程序,界面如下:

C操作注册表 实现快捷启动程序 - ╱D/调メ感覚 - 低调de感觉的博客

 

创建一个快捷启动:QQ.exe 让它可以启动QQ。

如下:

C操作注册表 实现快捷启动程序 - ╱D/调メ感覚 - 低调de感觉的博客

 
只要选好QQ的安装路径,点击创建就OK啦。

C操作注册表 实现快捷启动程序 - ╱D/调メ感覚 - 低调de感觉的博客
 

 在 开始>运行 中输入“QQ”就可以启动QQ程序:

C操作注册表 实现快捷启动程序 - ╱D/调メ感覚 - 低调de感觉的博客
 

 启动成功!

C操作注册表 实现快捷启动程序 - ╱D/调メ感覚 - 低调de感觉的博客

 

关键的操作注册表代码如下(RegeditClass类):


using System;  
using System.Collections.Generic;  
using System.Text;  
using Microsoft.Win32;  
 
namespace CreateStart  
{  
    /// <summary>  
    /// 注册表操作  
    /// </summary>  
    class RegeditClass  
    {  
        /// <summary>  
        /// 创建快捷启动  
        /// </summary>  
        /// <param name="name">快捷启动名</param>  
        /// <param name="path">文件路径</param>  
        public static void Create(string name, string filePath)  
        {  
            RegistryKey reg = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths", true);  
            RegistryKey key = reg.CreateSubKey(name);  
            key.SetValue("", filePath, RegistryValueKind.String);  
            string path = filePath.Substring(0, filePath.LastIndexOf(@"\") + 1);  
            key.SetValue("Path", path, RegistryValueKind.String);  
        }  
 
        /// <summary>  
        /// 检查是否存在  
        /// </summary>  
        /// <param name="name">快捷启动名</param>  
        /// <returns>指定的项是否存在</returns>  
        public static bool Exist(string name)  
        {  
            RegistryKey reg = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths");  
            string[] subKeys = reg.GetSubKeyNames();  
            foreach (string str in subKeys)  
            {  
                if (str.ToLower().Equals(name.ToLower()))  
                    return true;  
            }  
            return false;  
        }  
    }  
}  
 

程序源代码在此,DownLoad

在Visual Studio 2005 及其 WinXP 下通过。 运行需要FrameWork 2.0