您的位置:首页 > 编程语言 > C#

C# 实现程序的开机启动

2010-10-25 16:53 323 查看
/// <summary>
/// 保存开启启动设置的方法
/// </summary>
private void DoAutoRunXML()
{
XmlNode root = clsXMl.GetRootNode();
foreach (XmlNode node in root.ChildNodes)
{
if (node.Name == "AutoRun")
{
if (node.InnerText == "no")
{
node.InnerText = "yes";//重写XML
ToolStripMenuItemAutoRun.Checked = true;
RunWhenStart(true, Application.ProductName, Application.StartupPath + "//" + Application.ProductName + ".exe");
}
else if (node.InnerText == "yes")
{
node.InnerText = "no";
ToolStripMenuItemAutoRun.Checked = false;
RunWhenStart(false, Application.ProductName, Application.StartupPath + "//" + Application.ProductName + ".exe");
}
}
}
clsXMl.xmlSave();
}
/// <summary>
/// 修改 开机启动 注册表的方法
/// </summary>
/// <param name="bFlag"> 是否开机启动</param>
/// <param name="strName">启动值的名称</param>
/// <param name="strPath">启动程序的路径</param>
private void RunWhenStart(bool bFlag, string strName, string strPath)
{
Microsoft.Win32.RegistryKey rootKey = Microsoft.Win32.Registry.LocalMachine;//本地计算机数据的配置
Microsoft.Win32.RegistryKey runKey = rootKey.CreateSubKey(@"SOFTWARE/Microsoft/Windows/CurrentVersion/Run");
if (bFlag == true)//创建开机启动
{
try
{
runKey.SetValue(strName, strPath);
rootKey.Close();// 刷新 关闭 保存修改
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, " 提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
else
{
try
{
runKey.DeleteValue(strName);
rootKey.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, " 提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
GC.Collect();
}


主要思想是修改注册表,但是rootKey选择LocalMachine的话在win7会涉及权限的问题,所以这个键还是选择CurUser比较好.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: