/// <summary>
        /// 开机自动启动
        /// </summary>
        /// <param name="started">设置开机启动,或取消开机启动</param>
        /// <param name="exeName">注册表中的名称</param>
        /// <returns>开启或停用是否成功</returns>
        public static bool SetSelfStarting(bool started, string exeName)
        {
            RegistryKey key = null;
            try
            {
                
                string exeDir = System.Windows.Forms.Application.ExecutablePath;
                key = Registry.LocalMachine.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true);//打开注册表子项
                               
                if (key == null)//如果该项不存在的话,则创建该子项
                {
                    key = Registry.LocalMachine.CreateSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run");
                }
                if (started)
                {
                    try
                    {
                        object ob = key.GetValue(exeName, -1);
                  
                        if (!ob.ToString().Equals(exeDir))
                        {
                            if (!ob.ToString().Equals("-1"))
                            {
                                key.DeleteValue(exeName);//取消开机启动
                            }
                            key.SetValue(exeName, exeDir);//设置为开机启动
                        }
                        key.Close();                    }
                    catch (Exception ex)
                    {
                        return false;
                    }
                }
                else
                {
                    try
                    {
                        key.DeleteValue(exeName);//取消开机启动
                        key.Close();
                    }
                    catch (Exception ex)
                    {
                        return false;
                    }
                }
                return true;
            }
            catch (Exception ex)
            {
                if (key != null)
                {
                    key.Close();
                }
                return false;
            }
        }

解决方案 »

  1.   

    调用这个方法的时候,exeName参数,怎么填啊
      

  2.   

    调用这个方法的时候,exeName参数,怎么填啊
    就是你  debug或者release中的可以执行的exe的名称,它将写入注册表中。
      

  3.   

    http://www.cnblogs.com/xiaogangqq123/archive/2011/08/29/2158318.html
      

  4.   

    按照这个方法试了下,没有效果哦。不自动启动
    看你的注册表 中有没有,
    SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run这个路径。
      

  5.   

     void RegRun(string appName,bool f)
            {
                RegistryKey HKCU = Registry.CurrentUser;
                RegistryKey Run = HKCU.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run", true);
                bool b = false;
                foreach (string i in Run.GetValueNames())
                {
                    if (i == appName)
                    {
                        b = true;
                        break;
                    }
                }
                try
                {
                    if (f)
                    {
                        Run.SetValue(appName, Application.ExecutablePath);
                    }
                    else
                    {
                        Run.DeleteValue(appName);
                    }
                }
                catch
                { }
                HKCU.Close();
            }
      

  6.   

    部署为LocalService应该可以,只不过可能需要用户验证口令
      

  7.   

    appName 为项目名称。 f 控制 自启动  和取消自启动。