加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

不登录用户的情况下开机自启动程序的解决方法

(2013-07-23 17:37:28)
分类: IT

    今天做项目的时候,需要将一个数据同步工具在服务器上开机自启动,在网上查找了一下,找到了三种方法:在启动文件夹中添加工具的快捷方式写注册表每日计划任务

一、启动文件夹中添加工具的快捷方式

    如图1所示,开始 --> 所有程序 --> 启动,右键启动,选择打开所有用户。系统会打开对应启动程序的文件夹。

http://s6/mw690/aed121ffgx6BhJal1hb45&690

                                       图1 打开启动文件夹
    启动文件夹打开之后,只需要将要开机启动的工具快捷方式复制到该文件夹内即可。同时,图1中的启动下方就会显示你所添加的快捷方式。

    但是,此种方法一定要登录用户之后才能启动,用户注销了程序也就关了,达不到要求。
二、写注册表

    写注册表有两种方式,一种是用代码将程序名和程序所在路径写到注册表中去,另一种就是手动在注册表中添加键值对——手动添加程序名(程序名随意)和程序所在路径。
利用C#开机启动程序:

/// <summary>
/// 设置应用程序开机自动运行
/// </summary>
/// <param name="fileName">应用程序的文件名</param>
/// <param name="isAutoRun">是否自动运行,为false时,取消自动运行</param>
/// <exception cref="System.Exception">设置不成功时抛出异常</exception>
public static void SetAutoRun(string fileName, bool isAutoRun)
{
     RegistryKey reg = null;
     try
     {
          if (!System.IO.File.Exists(fileName))
               throw new Exception("该文件不存在!");
          String name = fileName.Substring(fileName.LastIndexOf(@"\") + 1);
          reg = Registry.LocalMachine.OpenSubKe(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run", true);
          if (reg == null)
               reg = Registry.LocalMachine.CreateSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run");
          if (isAutoRun)
               reg.SetValue(name, fileName);
          else
               reg.SetValue(name, false);
     }
     catch (Exception ex)
     {
          throw new Exception(ex.ToString());
     }
     finally
     {
          if (reg != null)
              reg.Close();
     }

}
-----------------------------------取消开机启动(删除注册表)-------------------------------------
using Microsoft.Win32;//添加命名空间

public static bool DeleteAutoRun(string keyName,string filePath)

{

    try

    {

         RegistryKey runKey=Registry.LocalMachine.OpenSubKey(@"\SOFTWARE\Microsoft\Windows\CurrentVersion\Run",true);

         runKey.DeleteValue(keyName,filePath);

         runKey.Close();

     }

     catch

     {

         return false;

     }

     return true;

}

--------------------------------------------------------------------------------------------------

手动将键值对添加到注册表中去:

运行 --> regedit --> 打开注册表,找到路径: HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run。

如图2所示,右键选择字符串值所示,在弹出的对话框中复制程序所在路径即可。

http://s6/mw690/aed121ffgx6BhNYb7Vz15&690


http://s12/mw690/aed121ffgx6BhO18yOD1b&690

                                 图2 手动添加程序到注册表

    此种方法与第一种方法存在相同的问题,即一定要有用户登录才能启动,用户注销对应程序也会关闭。

三、每日计划任务
    打开控制面板,选择每日计划任务(windows Server2003中或者是Xp中,在win7或者WindowsServer2008中启动方法是:开始,输入计划任务),如图3所示,在右边窗口选择创建基本任务,图中有详细步骤:

http://s4/mw690/aed121ffgx6BhOYpELVb3&690

http://s2/mw690/aed121ffgx6BhP0n9mx41&690

http://s5/mw690/aed121ffgx6BhPawt1Oe4&690

http://s2/mw690/aed121ffgx6BhPcrjG1c1&690

图3 每日计划任务设置开机启动程序

    此种方法不需要登录用户即可启动应用程序,满足程序部署的要求。至此,问题得到解决。

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有