让C#程序自动启动

原文地址:

http://zhidao.baidu.com/question/67758997.html 

可以使用注册表,给你注册表关于程序自启动的一些技术参考。

 


Load注册键
它也能够自动启动程序
位置:HKEY_CURRENT_USER"Software"Microsoft"WindowsNT"CurrentVersion"Windows"load。

Userinit注册键
位置:HKEY_LOCAL_MACHINE"SOFTWARE"Microsoft"WindowsNT"CurrentVersion "Winlogon"Userinit。这里也能够使系统启动时自动初始化程序。通常该注册键下面有一个userinit.exe,如图,但这个键允许指 定用逗号分隔的多个程序,例如“userinit.exe,OSA.exe”(不含引号)。

Explorer"Run注册键

和load、Userinit不同,Explorer"Run键在HKEY_CURRENT_USER和HKEY_LOCAL_MACHINE 下都有,具体位置是:HKEY_CURRENT_USER"Software"Microsoft"Windows"CurrentVersion "Policies"Explorer"Run,和HKEY_LOCAL_MACHINE"SOFTWARE"Microsoft"Windows "CurrentVersion"Policies"Explorer"Run。

RunServicesOnce注册键

RunServicesOnce注册键用来启动服务程序,启动时间在用户登录之前,而且先于其他通过注册键启动的程序。 RunServicesOnce注册键的位置是:HKEY_CURRENT_USER"Software"Microsoft"Windows "CurrentVersion"RunServicesOnce,和HKEY_LOCAL_MACHINE"SOFTWARE"Microsoft "Windows"CurrentVersion"RunServicesOnce。

RunServices注册键

RunServices注册键指定的程序紧接RunServicesOnce指定的程序之后运行,但两者都在用户登录之前。 RunServices的位置是:HKEY_CURRENT_USER"Software"Microsoft"Windows "CurrentVersion"RunServices,和HKEY_LOCAL_MACHINE"SOFTWARE"Microsoft "Windows"CurrentVersion"RunServices。

RunOnce"Setup注册键

RunOnce"Setup指定了用户登录之后运行的程序,它的位置是:HKEY_CURRENT_USER"Software "Microsoft"Windows"CurrentVersion"RunOnce"Setup,和HKEY_LOCAL_MACHINE "SOFTWARE"Microsoft"Windows"CurrentVersion"RunOnce"Setup。

RunOnce注册键

安装程序通常用RunOnce键自动运行程序,它的位置在HKEY_LOCAL_MACHINE"SOFTWARE"Microsoft "Windows"CurrentVersion"RunOnce和HKEY_CURRENT_USER"Software"Microsoft "Windows"CurrentVersion"RunOnce。HKEY_LOCAL_MACHINE下面的RunOnce键会在用户登录之后立即运 行程序,运行时机在其他Run键指定的程序之前。HKEY_CURRENT_USER下面的RunOnce键在操作系统处理其他Run键以及“启动”文件 夹的内容之后运行。如果是XP,你还需要检查一下HKEY_LOCAL_MACHINE"SOFTWARE"Microsoft"Windows "CurrentVersion"RunOnceEx。

Run注册键

Run是自动运行程序最常用的注册键,位置在:HKEY_CURRENT_USER"Software"Microsoft"Windows "CurrentVersion"Run,和HKEY_LOCAL_MACHINE"SOFTWARE"Microsoft"Windows "CurrentVersion"Run。HKEY_CURRENT_USER下面的Run键紧接HKEY_LOCAL_MACHINE下面的Run键运 行,但两者都在处理“启动”文件夹之前。

 

 

using Microsoft.Win32;

/// <summary>
/// 开机启动项
/// </summary>
/// <param name="Started">是否启动</param>
/// <param name="name">启动值的名称</param>
/// <param name="path">启动程序的路径</param>
public void RunWhenStart(bool Started, string name, string path)
{
RegistryKey HKLM = Registry.LocalMachine;
RegistryKey Run = HKLM.CreateSubKey(@"SOFTWARE"Microsoft"Windows"CurrentVersion"Run");
if (Started == true)
{
try
{
Run.SetValue(name, path);
HKLM.Close();
}
catch
{

}
}
else
{
try
{
Run.DeleteValue(name);
HKLM.Close();
}
catch
{

}
}
}

我是在关这程序时加上去的
/// <summary>
/// 清理所有正在使用的资源。
/// </summary>
/// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
RunWhenStart(chk_qidong.Checked, "监视狗", System.Windows.Forms.Application.ExecutablePath);
base.Dispose(disposing);//chk_qidong.Checked 这是一个bool值 "监视狗"是名称 System.Windows.Forms.Application.ExecutablePath是程序路径
}

posted on 2008-11-11 11:09  冷月孤峰  阅读(1306)  评论(0)    收藏  举报