Java使用“启动服务”;特别";名称
我想启动以下两项服务:Java使用“启动服务”;特别";名称,java,Java,我想启动以下两项服务: String s7 = "OracleDBConsoleorcl"; String s8 = "Oracle ORCL VSS Write Service"; 使用此方法: private void startService(String SERVICE_NAME) { String[] script = {"cmd.exe", "/c", "sc", "start", SERVICE_NAME};//to start service try {
String s7 = "OracleDBConsoleorcl";
String s8 = "Oracle ORCL VSS Write Service";
使用此方法:
private void startService(String SERVICE_NAME) {
String[] script = {"cmd.exe", "/c", "sc", "start", SERVICE_NAME};//to start service
try {
Process p = Runtime.getRuntime().exec(script);
p.waitFor();
BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line = reader.readLine();
while (line != null) {
if (line.equals("0")) {
System.out.println(line);
} else {
System.out.println(line);
}
line = reader.readLine();
}
} catch (IOException | InterruptedException e1) {
System.out.println(e1);
}
}
这就是问题所在:s7正确启动,但s8没有,因为(我猜)服务名称包含空格,导致此错误:
[SC] StartService: OpenService FAILED 1060:
The specified service does not exist as an installed service.
我的意思是,服务存在于这里:
有什么我可以试试的吗?我确实尝试了字符串s8=“\”Oracle ORCL VSS写入服务\”;要为cmd提供正确的格式,但两者都不起作用…显示的字符串不是真实的/内部服务名称
在“服务”列表中打开该条目的属性,您可以看到其服务名称(不包含空格)。如果您引用它,它是否有效?字符串s8=“\”Oracle ORCL VSS写入服务\”;请在不使用“cmd/c”的情况下尝试它-
sc
是一个.exe
而不是一个cmd内部命令,这样Java就可以不使用cmd直接执行它。