Jar*_*red 17 windows windows-service windows-command-prompt
我需要通过命令提示符查询 Windows 服务的可执行路径。我想我的方式会做到这一点是:sc qc myServiceName
,但是当我这样做,我得到以下错误:
[SC] QueryServiceConfig 失败 122:
传递给系统调用的数据区太小。
[SC] GetServiceConfig 需要 1094 字节
我认为这意味着 sc 命令正在向其他一些库发送一个数据结构,该结构对于需要返回的数据来说太小了。SC 没有用更大的数据结构(1094 字节)很好地重试,它会爆炸并给我这个丑陋的错误消息。谢谢微$oft。
那么有没有办法解决这个错误?我只需要可执行文件的路径,但如果需要,我会从其他一些文本中解析它。
Ken*_*nan 22
在尝试获取可执行文件路径很长的服务的详细信息时,我也遇到了这个问题。此讨论包含一个解决方法;您可以将缓冲区大小作为参数传递给sc qc
. 也就是说,如果你这样做:
sc qc <service name> 5000
Run Code Online (Sandbox Code Playgroud)
“传递给系统调用的数据区域太小”错误消失了。
另请参阅SC QC MSDN 页面:
sc [<ServerName>] qc [<ServiceName>] [<BufferSize>]
Run Code Online (Sandbox Code Playgroud)
在哪里:
<BufferSize> 指定缓冲区的大小(以字节为单位)。默认缓冲区大小为 1,024 字节。
Jar*_*red 14
我找到了一个可行的解决方案:
reg query "HKLM\System\CurrentControlSet\Services\<serviceName>" /v "ImagePath"
当然这需要一些解析,但它为我提供了 services.msc 对话框提供的完整路径。
MDM*_*rra 10
您可以在 PowerShell 中使用 WMI 查询执行此操作,如下所示:
$service = get-wmiobject -query 'select * from win32_service where name="winrm"'; echo $service.pathname
Run Code Online (Sandbox Code Playgroud)
这将为您提供完整路径,包括 services.msc 中显示的选项。只需winrm
在我的示例中替换为您要搜索的任何服务。
上面的查询winrm
应该输出C:\Windows\System32\svchost.exe -k NetworkService
使用wmic
命令行实用程序尝试一下。这是我机器上名为CrashPlanService
.
C:\Users\Ben>wmic service CrashPlanService get PathName
PathName
"C:\Program Files\CrashPlan\CrashPlanService.exe"
Run Code Online (Sandbox Code Playgroud)
基本上,wmic service <<YourService>> get PathName
。
归档时间: |
|
查看次数: |
72600 次 |
最近记录: |