我需要透過命令提示字元查詢 Windows 服務以取得其可執行檔的路徑。我認為我的方式會這樣做是:sc qc myServiceName
,但是當我這樣做時,出現以下錯誤:
[SC] QueryServiceConfig 失敗 122:
傳遞給系統呼叫的資料區域太小。
[SC] GetServiceConfig 需要 1094 位元組
我認為這意味著 sc 命令正在將資料結構發送到其他某個庫,該資料結構對於需要返回的資料來說太小了。 SC 沒有很好地重試更大的資料結構(1094 位元組),而是崩潰了並給了我這個醜陋的錯誤訊息。謝謝微$oft。
那麼有沒有辦法解決這個錯誤呢?我只需要可執行檔的路徑,但如果需要,我會從其他文字中解析它。
答案1
答案2
我找到了一個可行的解決方案:
reg query "HKLM\System\CurrentControlSet\Services\<serviceName>" /v "ImagePath"
當然,這需要一些解析,但它為我提供了 services.msc 對話框提供的完整路徑。
答案3
您可以在 PowerShell 中使用 WMI 查詢執行此操作,如下所示:
$service = get-wmiobject -query 'select * from win32_service where name="winrm"'; echo $service.pathname
這將為您提供完整路徑,包括 services.msc 中顯示的選項。只需將winrm
我的範例替換為您想要搜尋的任何服務。
上面的查詢winrm
應該會輸出C:\Windows\System32\svchost.exe -k NetworkService
答案4
從 PowerShell 7 開始:
(Get-Service theServiceName).BinaryPathName