pba*_*ney 4 windows services windows-services
我试图找出为什么服务处于 STOP_PENDING 状态,但该服务似乎是隐藏的。
它不会出现在 General 中sc query
,也不会出现services.msc
在 Powershell 中Get-Service
。
事情是这样的:
我曾经findstr
在一组文件中搜索一个字符串,它在一个包含大量 ASCII BELL 字符的二进制文件中找到了它。所以我的控制台发出了无尽的蜂鸣声。所以我打开另一个控制台来停止蜂鸣声:
net stop beep
Run Code Online (Sandbox Code Playgroud)
没问题,蜂鸣声停止了。但是当我发出 a 时net start beep
,我总是收到错误:
服务正在启动或停止。请稍后再试。
如果我这样做,我可以看到服务的状态:
sc query beep
Run Code Online (Sandbox Code Playgroud)
但将军并sc query
没有表现出服务。
问题:
为什么没有beep
列出该服务?为什么它没有出现在sc query
,services.msc
或 中Get-Services
?是否存在隐藏服务之类的东西?
另外,如何才能重新启动该服务?该服务总是以这种方式做出反应。如果我停止它,它就会陷入STOP_PENDING
状态并保持在那里,直到我重新启动。
sc
可以控制常规服务和驱动程序(在低级术语中都是“服务”,但驱动程序的服务类型为KERNEL_DRIVER
)。beep
是一名司机。默认情况下,sc
仅列出非驱动程序服务。(此外,默认情况下它仅列出处于“活动”状态的条目。)
从以下输出可以明显看出sc /?
:
USAGE:
sc <server> [command] [service name] <option1> <option2>...
[...]
QUERY and QUERYEX OPTIONS :
If the query command is followed by a service name, the status
for that service is returned. Further options do not apply in
this case. If the query command is followed by nothing or one of
the options listed below, the services are enumerated.
type= Type of services to enumerate (driver, service, all)
(default = service)
state= State of services to enumerate (inactive, all)
(default = active)
[...]
SYNTAX EXAMPLES
sc query - Enumerates status for active services & drivers
sc query messenger - Displays status for the messenger service
sc queryex messenger - Displays extended status for the messenger service
sc query type= driver - Enumerates only active drivers
sc query type= service - Enumerates only Win32 services
sc query state= all - Enumerates all services & drivers
[...]
Run Code Online (Sandbox Code Playgroud)
正如您在这里看到的,它表示type=
参数允许选择service
,driver
或all
,默认值为service
。1(同样,该state=
参数的默认值为active
。)
因此,要列出所有活动的服务/驱动程序,您可以使用sc query type= all
. 要列出非活动的,您可以使用sc query type= all state= all
。
至于如何重启蜂鸣驱动:据我所知,没有办法。beep
并不是真正设计用来停止的。虽然它是半工作的(并且它被设置为STOPPABLE
),所以它至少会停止蜂鸣声,并且当您停止它时它不会使系统崩溃(就像其他一些驱动程序不幸会做的那样),但它也不会清理它的状态正确,但它会一直陷入STOP_PENDING
困境,因为它从未告诉服务管理器它是 now STOPPED
。(据我所知)恢复蜂鸣声的唯一方法是重新启动计算机。
顺便说一句,如果您正在寻找更强大的 GUI 来进行服务管理(包括驱动程序类型的服务),请查看Process Hacker。它有一个“服务”选项卡,它不仅允许您列出和控制所有服务,还可以以services.msc
不允许您这样做的方式编辑它们(例如更改它们的路径)。但请记住,权力越大,责任越大。你也可以用它破坏你的系统。
脚注:
1. 在这里我们必须理解,sc
尝试说出“usertalk”并调用KERNEL_DRIVER
“driver”类型的服务而不是“service”,即使它们(从低级角度来看)技术上都是服务。这类似于创建和打开文件的方式,CreateFile
因为它创建了一个文件句柄,但世界上的每个 UI 都不会将打开现有文件视为“创建”任何内容。不幸的是,这些视角上的区别常常使术语变得非常混乱,因为同一个术语可能意味着完全不同的东西,或者像这里部分相同但部分不同的东西,这一切都取决于你是否从内核、用户的角度来看它。 -mode API,或Windows Shell(仅举几例)。
归档时间: |
|
查看次数: |
3111 次 |
最近记录: |