我想要修改我的应用程序路径,但这样做会导致服务仍然指向旧位置而出现故障。
通过转到 管理工具 > 服务
,您可以打开属性对话框并查看 可执行文件路径
,但没有更改它的方法。
是否有任何方法让用户修改服务路径而无需重新安装应用程序?
我想要修改我的应用程序路径,但这样做会导致服务仍然指向旧位置而出现故障。
通过转到 管理工具 > 服务
,您可以打开属性对话框并查看 可执行文件路径
,但没有更改它的方法。
是否有任何方法让用户修改服务路径而无需重新安装应用程序?
还有在SuperUser上看到的这种方法,它使用sc
命令行而不是修改注册表:
sc config <service name> binPath= <binary path>
binPath=
后面的空格很重要。您也可以使用以下命令查询当前配置:sc qc <service name>
这将显示类似于以下输出:
[SC] QueryServiceConfig SUCCESS
SERVICE_NAME: ServiceName
TYPE : 10 WIN32_OWN_PROCESS START_TYPE : 2 AUTO_START ERROR_CONTROL : 1 NORMAL BINARY_PATH_NAME : C:\Services\ServiceName LOAD_ORDER_GROUP : TAG : 0 DISPLAY_NAME : <Display name> DEPENDENCIES : SERVICE_START_NAME : user-name@domain-name
这涉及到编辑注册表,但是服务信息可以在 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services
中找到。 找到您想要重定向的服务,找到 ImagePath
子键并更改该值。
sc
或sc.exe
更好,风险更小。 - Arrcival你也可以使用PowerShell来完成:
Get-WmiObject win32_service -filter "Name='My Service'" `
| Invoke-WmiMethod -Name Change `
-ArgumentList @($null,$null,$null,$null,$null, `
"C:\Program Files (x86)\My Service\NewName.EXE")
或者:Set-ItemProperty -Path "HKLM:\System\CurrentControlSet\Services\My Service" `
-Name ImagePath -Value "C:\Program Files (x86)\My Service\NewName.EXE"
打开运行(win+R),输入“Regedit.exe”打开“注册表编辑器”,
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services
找到 "Apache2.4",打开该文件夹并在右侧找到 "ImagePath",点击打开 "ImagePath", 在 "value Data" 下方输入以下路径:
"C:\xampp\apache\bin\httpd.exe" -k runservice (适用于 XAMPP,其他软件请指向 Apache 安装位置下的 bin 文件夹 "C:(Apache installed location)\bin\httpd.exe" -k runservice)
"C:\Program Files\MongoDB\Server\4.2\bin\mongod.exe" --config "C:\Program Files\MongoDB\Server\4.2\bin\mongod.cfg" --service
sc config MongoDB binPath= "<Modified string with \" to replace ">"
在我的情况下,这是
sc config MongoDB binPath= "\"C:\Program Files\MongoDB\Server\4.2\bin\mongod.exe\" --config \"C:\Program Files\MongoDB\Server\4.2\bin\mongod.cfg\" --service -- auth"
service-run
而不是config
)。 - Ernani您不能直接编辑服务的执行路径。为此,您可以使用sc命令,
SC CONFIG ServiceName binPath= "Path of your file"
例如:
sc config MongoDB binPath="I:\Programming\MongoDB\MongoDB\bin\mongod.exe --config I:\Programming\MongoDB\MongoDB\bin\mongod.cfg --service"
我只是觉得对于Git Bash用户,你应该把路径放在单引号' '
中,就像这样
sc config <service name> binPath='<binary path>'
例如:sc config MongoDB binPath='"C:\Program Files\MongoDB\Server\5.03\bin\mongod.exe" --config "C:\Program Files\MongoDB\Server\5.03\bin\mongod.cfg" --service --auth'
这对我来说在Windows 10上使用Git Bash更新服务路径是有效的。
使用新的CIM cmdlet是使用Invoke-WmiMethod
的替代方法。这也避免了以前答案中看到的@($null,$null...)
对象的需要。
Get-CimInstance win32_service -Filter "Name='My Service'" | Invoke-CimMethod -MethodName Change -Arguments @{PathName="C:\Program Files\My Service\NewName.exe"}
sc config mssqlserver binPath= "\"F:\SQL DATA\MSSQL10.MSSQLSERVER\MSSQL\Binn\sqlservr.exe\" -sMSSQLSERVER"
- Marc Durdinsc qc X
后得到了[SC] QueryServiceConfig FAILED 122:
,请尝试使用sc qc X 1000
。参见这里。 - raphaelsc.exe
而不是裸的sc
。 - fiat