Answers:
使用SC
(服务控制)命令,它为您提供的不仅仅是start
&的更多选项stop
。
描述: SC是一个命令行程序,用于与 NT服务控制器和服务。 用法: sc <服务器> [命令] [服务名称] ... 选项<server>的格式为“ \\ ServerName” 可以通过键入以下命令获得有关命令的更多帮助:“ sc [command]” 命令: query -----------查询服务状态,或 枚举服务类型的状态。 queryex --------查询服务的扩展状态,或者 枚举服务类型的状态。 start -----------启动服务。 暂停-----------将暂停控制请求发送到服务。 询问-将INTERROGATE控制请求发送到服务。 继续--------将CONTINUE控制请求发送到服务。 stop ------------将STOP请求发送到服务。 config ----------更改服务的配置(持久)。 description -----更改服务的描述。 故障---------更改服务在故障时采取的措施。 qc --------------查询服务的配置信息。 qdescription ----查询服务的描述。 qfailure --------查询服务在失败时采取的措施。 delete ----------删除服务(从注册表中)。 create ----------创建服务。(将其添加到注册表)。 control ---------将控件发送到服务。 sdshow ----------显示服务的安全描述符。 sdset -----------设置服务的安全描述符。 GetDisplayName-获取服务的DisplayName。 GetKeyName ------获取服务的ServiceKeyName。 EnumDepend ------枚举服务依赖项。 以下命令不需要服务名称: sc <服务器> <命令> <选项> boot ------------(确定|错误)指示是否应该最后一次启动 保存为最新的良好启动配置 锁定------------锁定服务数据库 QueryLock ------查询SCManager数据库的LockStatus 例: sc启动MyService
net start [serviceName]
和
net stop [serviceName]
告诉你他们是成功还是失败。例如
U:\>net stop alerter
The Alerter service is not started.
More help is available by typing NET HELPMSG 3521.
如果从批处理文件运行,则可以访问返回代码的ERRORLEVEL。0表示成功。更高的值表示失败。
作为蝙蝠文件,error.bat
:
@echo off
net stop alerter
if ERRORLEVEL 1 goto error
exit
:error
echo There was a problem
pause
输出如下所示:
U:\>error.bat
The Alerter service is not started.
More help is available by typing NET HELPMSG 3521.
There was a problem
Press any key to continue . . .
返回码
- 0 = Success
- 1 = Not Supported
- 2 = Access Denied
- 3 = Dependent Services Running
- 4 = Invalid Service Control
- 5 = Service Cannot Accept Control
- 6 = Service Not Active
- 7 = Service Request Timeout
- 8 = Unknown Failure
- 9 = Path Not Found
- 10 = Service Already Running
- 11 = Service Database Locked
- 12 = Service Dependency Deleted
- 13 = Service Dependency Failure
- 14 = Service Disabled
- 15 = Service Logon Failure
- 16 = Service Marked For Deletion
- 17 = Service No Thread
- 18 = Status Circular Dependency
- 19 = Status Duplicate Name
- 20 = Status Invalid Name
- 21 = Status Invalid Parameter
- 22 = Status Invalid Service Account
- 23 = Status Service Exists
- 24 = Service Already Paused
编辑20.04.2015
返回码:
NET命令不会返回记录的Win32_Service类返回代码(“服务未激活”,“服务请求超时”等),对于许多错误,仅返回Errorlevel 2。
在这里查看:http : //ss64.com/nt/net_service.html
NET
不只是服务相关的功能,同时SC
是只为服务相关的功能。
errorlevel
返回的是2,请参见此处如何解释错误结果。
我为此创建了个人批处理文件,我的文件有些不同,但是可以根据需要随意修改。我前一阵子创建它的原因是我很无聊,并且想为人们提供一种简单的方式来输入结束,开始,停止或设置为自动。该BAT文件仅要求您输入服务名称,其余的将由您完成。我没有意识到他正在寻找可以说明任何错误的内容,我一定误读了那部分。虽然通常可以通过在行的末尾输入>> output.txt来完成。
%var%只是用户能够在其中输入自己的服务的一种方式,而不必每次想要启动/停止其他服务时都修改bat文件。
如果我错了,那么任何人都可以随时纠正我。
@echo off
set /p c= Would you like to start a service [Y/N]?
if /I "%c%" EQU "Y" goto :1
if /I "%c%" EQU "N" goto :2
:1
set /p var= Service name:
:2
set /p c= Would you like to stop a service [Y/N]?
if /I "%c%" EQU "Y" goto :3
if /I "%c%" EQU "N" goto :4
:3
set /p var1= Service name:
:4
set /p c= Would you like to disable a service [Y/N]?
if /I "%c%" EQU "Y" goto :5
if /I "%c%" EQU "N" goto :6
:5
set /p var2= Service name:
:6
set /p c= Would you like to set a service to auto [Y/N]?
if /I "%c%" EQU "Y" goto :7
if /I "%c%" EQU "N" goto :10
:7
set /p var3= Service name:
:10
sc start %var%
sc stop %var1%
sc config %var2% start=disabled
sc config %var3% start=auto
语法总是让我....所以...
如果您同时是两台计算机上的管理员,以管理员身份运行.bat且这些计算机位于同一域中,则这里明确地说明了如何在批处理文件中添加一行以终止远程服务(在另一台计算机上)。机器名称遵循UNC格式\ myserver
sc \\ip.ip.ip.ip stop p4_1
在这种情况下,当您在服务管理器中查看服务的属性时,p4_1既是服务名称又是显示名称。您必须使用服务名称。
对于您的Service Ops迷...请务必附加您的原因码并添加注释!例如,“ 4”等于“计划中”,并注释“停止服务器进行维护”
sc \\ip.ip.ip.ip stop p4_1 4 Stopping server for maintenance
CMD
以其他用户/ ID身份运行,runas /user:Domain\UserName cmd
然后输入密码。CMD将以指定的用户帐户开始运行。
我只是在上面使用Jonas的示例,并创建了0到24个错误级别的完整列表。其他职位是正确的,net start
并且net stop
只使用errorlevel
失败0成功和2。
但这对我有用:
net stop postgresql-9.1
if %errorlevel% == 2 echo Access Denied - Could not stop service
if %errorlevel% == 0 echo Service stopped successfully
echo Errorlevel: %errorlevel%
更改stop
为,start
然后反向进行。
这是Windows 10命令,用于使用batch启动系统还原:
sc config swprv start= Auto
您可能还喜欢这些命令:
将注册表值更改为自动启动系统还原
REG添加“ HKLM \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ SystemRestore” / v DisableSR / t REG_DWORD / d 0 / f
创建系统还原点
Wmic.exe /名称空间:\ root \ default路径SystemRestore调用CreateRestorePoint“ djibe保存了您的PC”,100,12
更改系统还原磁盘使用率
vssadmin调整影子存储大小/ for = C:/ on = C:/ maxsize = 10%
请享用
我在C#中编写Windows服务,停止/卸载/生成/安装/启动循环太累人了。编写了一个迷你脚本,将其命名reploy.bat
为该脚本,并将其放在我的Visual Studio输出目录(具有内置服务可执行文件的目录)中以自动执行循环。
只需设置这3个变量
servicename
:这显示在Windows服务控制面板(services.msc)上
slndir
:包含您的解决方案(.sln)文件的文件夹(不是完整路径)
binpath
:从构建到服务可执行文件的完整路径(而不是文件夹路径)
注意:这需要从Visual Studio Developer命令行运行,msbuild
命令才能起作用。
SET servicename="My Amazing Service"
SET slndir="C:dir\that\contains\sln\file"
SET binpath="C:path\to\service.exe"
SET currdir=%cd%
call net stop %servicename%
call sc delete %servicename%
cd %slndir%
call msbuild
cd %bindir%
call sc create %servicename% binpath=%binpath%
call net start %servicename%
cd %currdir%
也许这可以帮助某人:)