Windows服务操作之sc和net命令及windows任务计划
看个粟子:
1、“新建项目”——“Window服务”
生成的目录结构

双击“MainService.cs”,右键点击“添加安装程序”,自动会生成Projectinstaller.cs文件以及两个安装组件,对两个组件更名并做属性设置:



对服务的启动与停止添加代码
using System;
using System.Diagnostics;
using System.IO;
using System.ServiceProcess;
using System.Timers; namespace MainService
{
public partial class MainService : ServiceBase
{
private Timer time = new Timer();
public MainService()
{
InitializeComponent();
} protected override void OnStart(string[] args)
{
WriteLog("服务启动,时间:" + DateTime.Now.ToString("HH:mm:ss") + "\r\n"); time.Elapsed += new System.Timers.ElapsedEventHandler(MethodEvent);
time.Interval = * ;//时间间隔为2秒钟
time.Start();
} protected override void OnStop()
{
WriteLog("服务停止,时间:" + DateTime.Now.ToString("HH:mm:ss") + "\r\n");
} private void MethodEvent(object source, System.Timers.ElapsedEventArgs e)
{
time.Enabled = false; string result = string.Empty;
string startTime = DateTime.Now.ToString("HH:mm:ss");
try
{
//......... result = "执行成功,时间为:" + startTime;
}
catch (Exception exp)
{
result = "失败,原因:" + exp.Message;
}
finally
{
WriteLog(result); time.Enabled = true;
}
} /// <summary>
/// 日志记录
/// </summary>
/// <param name="logInfo"></param>
public void WriteLog(string logInfo)
{
try
{
string logDirectory = AppDomain.CurrentDomain.BaseDirectory + "\\Logs";
if (!Directory.Exists(logDirectory))
{
Directory.CreateDirectory(logDirectory);
}
string filePath = logDirectory + "\\" + DateTime.Now.ToString("yyyy-MM-dd") + ".txt";
File.AppendAllText(filePath, logInfo);
}
catch
{
}
}
}
}
添加windows窗体应用程序,命名为:InstallService
对启动程序添加代码:
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text; namespace InstallService
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("这是Windows应用程序");
Console.WriteLine("请选择,[1]安装服务 [2]卸载服务 [3]退出"); var rs = int.Parse(Console.ReadLine());
switch (rs)
{
case :
//取当前可执行文件路径,加上"s"参数,证明是从windows服务启动该程序
var path = Process.GetCurrentProcess().MainModule.FileName;
Process.Start("sc", "create myserver binpath= \"" + path + "\" displayName=MainService start= auto");
//因sc命令安装后未看到描述,我怀疑安装的服务不一定是我所创建的MainService服务项目,这为添加描述
Process.Start("sc", "description myserver \"利用空闲的网络带宽在后台传输文件。如果服务被停用,例如 Windows Update 和 MSN Explorer 的功能将无法自动下载程序和其他信息。如果此服务被禁用,任何依赖它的服务如果没有容错技术以直接通过 IE 传输文件,一旦 BITS 被禁用,就可能无法传输文件。\"");
Console.WriteLine("安装成功");
Console.Read();
break;
case :
Process.Start("sc", "delete myserver");
Console.WriteLine("卸载成功");
Console.Read();
break;
case :
break;
}
}
}
}
启动程序:

1安装后
运行“services.msc"打开服务管理器

我手动启动失败

所以我怀疑我安装的只是一个名字,与我添加的服务没有什么关系
选2
卸载成功
可看net命名安装与卸载可参看:http://www.cnblogs.com/qk2014/p/4869675.html
windows服务操作命令有sc和net 两个命令;
使用sc命令:
1 修改服务启动类型
sc config 服务名 start= demand (设置服务为手动启动)
start= auto (设置服务为自动启动)
start= disabled (设置服务为禁用)
2 安装服务:sc create 服务名
3 停止服务:sc stop 服务名
4 卸载服务:sc delete 服务名(卸载前先停止服务)
使用net命令
查看运行的服务: net start
启动服务: net start 服务名
停止服务: net stop 服务名
卸载服务: 服务名 -uninstall (卸载前先停止服务)
虽然2个都能达到停止服务和启动服务的效果,但是在重启服务时,就是使用批处理先stop后start来实现重启时,如果服务处于启动状态使用sc的stop后start,结果服务不能启动,因为sc命令在执行stop后不会等待马上继续执行批处理下面的语句,这时服务正在处于停止操作状态,所以start命令不能启动。
net命令在stop时会停止等待,在服务完全停止后再继续执行批处理后面的语句,所以net的重启命令就会正常。
windows服务安装与卸载批处理指令:
安装:
%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\installutil.exe "D:\project\psss\YGPS.PSS\YGPS.PSS.PrintService\bin\Debug\YGPS.PSS.PrintService.exe"
Net Start WinPrintService
sc config WinPrintService start= auto
pause
卸载:
sc stop WinPrintService
%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\installutil.exe /u "D:\project\pss\YGPS.PSS\YGPS.PSS.PrintService\bin\Debug\YGPS.PSS.PrintService.exe"
pause
bat设置windows计划任务
设置定时任务
@echo off
set NAME=dailybackup
set TIME=::
set DAY=MON,TUE,WED,THU,FRI,SAT,SUN
set COMMAND=cscript.exe %~dp0dailybak.vbs %SystemDrive%
cd %windir%\tasks\
if exist %NAME%.job del %NAME%.job schtasks /create /tn %NAME% /tr "%COMMAND%" /sc weekly /d %DAY% /st %TIME% /ru system
在含有看空格的参数或则路径前面加上 \" 进行转义,这样就ok
demo: schtasks /create /sc minute /mo /tn "finaltest" /tr "\"d:program file\smth.bat\"" \"'20' '302'\"
Windows_批处理+任务计划实现文件夹定时备份
SVN.bat
@echo off
echo 本批处理为Ls_man原创
echo 更多精彩博文请访问http://blog.csdn.net/ls_man echo 或登陆求知域官网http://www.qqextra.com color 0b & cls
echo 设置要备份的文件夹...
set "pbuf=D:\VisualSVN_Repositories"
echo 设置备份文件存放文件夹...
set "tbuf=G:\Backup_VisualSVN_Repositories" echo 初始化压缩程序设置...
cd \
C:
cd C:\Program Files\WinRAR
set yes=ok
echo 压缩程序在C:\Program Files\WinRAR\WinRAR.exe echo 设置备份文件名(以星期几命名,即备份文件只保存最近一周)...
set name=%date%
set name=%name:~-%
set name=svn_backup_%name% echo 是否存在同名文件,若存在则删除同名文件...
if exist %tbuf%\%name%.rar del %tbuf%\%name%.rar echo 开始执行压缩备份...
rar a -r -ed -esh %tbuf%\%name%.rar %pbuf%\*.*
echo 备份完毕!
由于要备份的文件夹和存放备份的文件夹及WinRaR的安装路径可能不同,根据实际情况修改即可。
下一步就是添加任务计划,打开控制面板-任务计划-添加任务计划,设置每天执行备份.bat,最好在晚上执行如凌晨1点。
扩展:
http://www.cnblogs.com/qk2014/p/4869675.html
http://www.cnblogs.com/testlife007/p/4396248.html
http://www.cnblogs.com/DelphiFan/archive/2009/03/10/1645579.html
http://www.cnblogs.com/a311300/archive/2010/12/30/1922229.html
http://www.cnblogs.com/wpcnblog/p/4732390.html
http://www.cnblogs.com/zcy-628/archive/2012/08/22/2650805.html
http://www.cnblogs.com/smileberry/p/4210245.html
http://www.cnblogs.com/knowledgesea/p/3616127.html
http://www.cnblogs.com/dongzhiquan/p/3231498.html
http://blog.csdn.net/ls_man
Windows服务操作之sc和net命令及windows任务计划的更多相关文章
- 无法从命令行或调试器启动服务,必须首先安装Windows服务(使用installutil.exe),然后用ServerExplorer、Windows服务器管理工具或NET START命令启动它
无法从命令行或调试器启动服务,必须首先安装Windows服务(使用installutil.exe),然后用ServerExplorer.Windows服务器管理工具或NET START命令启动它 1. ...
- windows 下操作目录(使用DOS命令)
Attrib 更改单个文件或目录的属性.该命令设置或删除指派给文件或目录的只读.系统.存档.隐藏以及压缩属性. 含有下列参数的 attrib 命令仅当使用故障恢复控制台时才可用.含有不同参数的 att ...
- Windows服务操作帮助类
/// <summary> /// 打开系统服务 /// </summary> /// <param name="serviceName">系统 ...
- Windows服务操作
资料 https://docs.microsoft.com/zh-cn/dotnet/api/system.serviceprocess.servicecontroller?redirectedfro ...
- win7 提升windows服务权限使非管理员用户可以控制windows服务的开启和关闭
#include <windows.h>#include <tchar.h>#include <strsafe.h>#include <aclapi.h> ...
- 玩转Windows服务系列——命令行管理Windows服务
说到Windows服务的管理就不得不说通过命令行的方式管理Windows服务,因为无论是系统管理员,还是通过编程的方式调用cmd命令,命令行都是非常方便以及强大的工具. 接下来就看一下如何通过cmd命 ...
- 玩转Windows服务系列——命令行管理Windows服务
原文:玩转Windows服务系列——命令行管理Windows服务 说到Windows服务的管理就不得不说通过命令行的方式管理Windows服务,因为无论是系统管理员,还是通过编程的方式调用cmd命令, ...
- [转]玩转Windows服务系列——命令行管理Windows服务
本文转自:http://www.cnblogs.com/hbccdf/p/managewindowsservicewithcmd.html 说到Windows服务的管理就不得不说通过命令行的方式管理W ...
- C#.NET 操作Windows服务(安装、卸载)
注意点: 1.安装时要请求到管理员权限. 2.卸载前,一定要停止掉Windows服务,否则需要重启或注销电脑.代码无法停止服务时,使用services.msc来停止. 开始: 1.新建一个名为&quo ...
随机推荐
- Simple Addition Permits Voltage Control Of DC-DC Converter's Output
http://electronicdesign.com/power/simple-addition-permits-voltage-control-dc-dc-converters-output In ...
- PHP正则表达式30分钟入门教程
正则表达式30分钟入门教程 三个常用的知识点: 1.惰性匹配:正则引擎默认是贪婪的,若要最少重复的话,需要用到惰性匹配符 “?” 懒惰限定符 代码/语法 说明 *? 重复任意次,但尽可能少重复 +? ...
- Unity 国际化 多语言设置
很多游戏中都有语言设置选项,NGUI插件中自带了国际化脚本,但是灵活性较低,而且目前项目是UGUI,以下是修改后,以便记录. Localization和NGUI中用法一样,挂在在一个不销毁的游戏物体上 ...
- 用百度SDK获取地理位置和天气信息
以下实现通过百度SDK获取地理位置和天气信息,请參考title=android-locsdk/guide/v5-0">百度开发文档 1. 在相关下载最新的库文件.将so文件的压缩文件解 ...
- C#启动外部程序以及等待外部程序关闭的几种方法
1. 启动外部程序,不等待其退出. 2. 启动外部程序,等待其退出. 3. 启动外部程序,无限等待其退出. 4. 启动外部程序,通过事件监视其退出. // using System.Diagnosti ...
- Python学习(七)面向对象 ——类和实例
Python 面向对象 —— 类和实例 类 虽然 Python 是解释性语言,但是它是面向对象的,能够进行对象编程.至于何为面向对象,在此就不详说了.面向对象程序设计本身就很值得深入学习,如要了解,请 ...
- 线段树(Segment Tree)(转)
原文链接:线段树(Segment Tree) 1.概述 线段树,也叫区间树,是一个完全二叉树,它在各个节点保存一条线段(即“子数组”),因而常用于解决数列维护问题,基本能保证每个操作的复杂度为O(lg ...
- OpenCV学习(9) 分水岭算法(3)
本教程我学习一下opencv中分水岭算法的具体实现方式. 原始图像和Mark图像,它们的大小都是32*32,分水岭算法的结果是得到两个连通域的轮廓图. 原始图像:(原始图像必须是3通道图像) Mark ...
- [Todo] Nodejs学习及Spider实验(包括php入门学习、React入门学习)
/Users/baidu/Documents/Data/Interview/Web-Server开发 深入浅出Node.js-f46c http://blog.csdn.net/u012273376/ ...
- c#如何操作ppt的播放 【转】
C#控制ppt的代码 包括打开ppt文件.读取幻灯页,插入幻灯片,自动播放等 using System.Collections.Generic; using System.Linq; using Sy ...