日期:2017-06-19  浏览次数:3050 次

工具: VS 2005(用的是上网本,所以2010 那啥的都跑不动) + SQL 2005

     那下面就来说说如何制作一个服务来 实现开机自动启动,每隔一段时间向student表中插入数据。 

    步骤:  1)   新建项目 ---> Windows 服务

        

             2) 拖放Times控件

            工具箱中 拖放一个 Time控件 (是System.Times 空间下的(要自己添加到工具箱中的,默认没有),不是System.Form.Windows.Time下的。这而不能引用错了,否则会服务不能正确运行.具体为什么,有待研究)

             3) 右击空白处,点击安装程序

                

                紧接着会出现 ,然后设置它的         Account 值为  LocalSystem

             将 serviceInstaller1  的statrtype=Automatic (开机自动启动)

          

4) 双击Times控件,开始写服务要执行的代码 (向student表中隔一秒插入一条数据)     

private void timer1_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
        {
            try
            {
                //数据库操作
                string ConString = "server=127.0.0.1;database=student;server=127.0.0.1;database=MySqlData;Integrated Security=SSPI";
 
                SqlConnection ConStudent = new SqlConnection(ConString);
 
                SqlCommand Cmd = new SqlCommand("insert into student (nameid) values ('3')", ConStudent);
 
                ConStudent.Open();
                Cmd.ExecuteNonQuery();
                ConStudent.Close();
            }
            catch (Exception ee)
            {
 
 
            }
        }

       

然后 debug 或者 Release都行。

5)  通过 Windows 文件夹下 Microsoft.net下的framework  文件夹中的 installutil.exe来向系统注册服务。

      最简单方法:将installutil.exe拷贝到刚才debug或者Release文件夹下,直接将刚才的程序拖放上来就可以注册了。

      (注:1.通过dos下注册的,有可能会提示文件找不到,那就把intallutil.exe拷贝到相应文件夹内即可

             2.dos下注册为  intallunit.exe   目标文件的完整路径

             3.服务不能单独编译,但是可以通过 VS 的附加进程编译来调试! 

       ) 

6)下面就可以启动服务了。 可以看见每隔一秒就会向数据库插入一条数据

总结: 调试的时候发现2个问题

    1.installutil.exe无法注册服务,提示找不到文件.(请以管理员身份运行)

       解决方案:  installutil.exe  拷贝到 目标 exe文件夹中

    2. 服务启动了,但是没有 执行相应的操作。

      解决方案:   Times 控件换为 System.Times下的。  (需要另外添加)

                      默认的是 Windows.form.Times 控件

//补充

1.Service启动属性:

        Manual      服务安装后,必须手动启动。

        Automatic    每次计算机重新启动时,服务都会自动启动。

        Disabled     服务无法启动。

 

2.新建的Service项目,其中各属性的含义(设计视图->右键属性):

  Autolog 是否自动写入系统的日志文件

  CanHandlePowerEvent 服务时候接受电源事件

  CanPauseAndContinue 服务是否接受暂停或继续运行的请求

  CanShutdown 服务是否在运行它的计算机关闭时收到通知,以便能够调用 OnShutDown 过程

  CanStop 服务是否接受停止运行的请求

  ServiceName 服务名

 

3. 也可以在系统服务管理器中,设置相应Service的属性或启动方式等

计算机管理 -> 服务和应用程序  -> 服务  -> ...