java控制Windows进程,服务管理器项目

简介: 本文介绍了如何使用Java的`Runtime`和`Process`类来控制Windows进程,包括执行命令、读取进程输出和错误流以及等待进程完成,并提供了一个简单的服务管理器项目示例。

概述:可以使用Runtime类和Process类。

使用Runtime.getRuntime().exec()方法执行Windows命令。这个方法接受一个字符串参数,表示要执行的命令。例如,要执行ipconfig命令,可以这样写:

String command = "ipconfig";
Process process = Runtime.getRuntime().exec(command);
  1. 获取进程的输入流和错误流。通过Process.getInputStream()Process.getErrorStream()方法可以分别获取进程的输入流和错误流。这两个流可以用来读取命令执行的结果和错误信息。

  2. 读取进程的输出。可以使用BufferedReader类来读取进程的输出。例如:

BufferedReader inputReader = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line;
while ((line = inputReader.readLine()) != null) {
    System.out.println(line);
}
  1. 读取进程的错误输出。与读取进程的输出类似,可以使用BufferedReader类来读取进程的错误输出。例如:
BufferedReader errorReader = new BufferedReader(new InputStreamReader(process.getErrorStream()));
String line;
while ((line = errorReader.readLine()) != null) {
    System.err.println(line);
}
  1. 等待进程完成。使用Process.waitFor()方法等待进程完成。例如:
int exitCode = process.waitFor();
System.out.println("Exit code: " + exitCode);

这就是一个简单的Java控制Windows进程的概述。需要注意的是,这种方法只适用于Windows操作系统,因为执行的命令是Windows特有的。在其他操作系统上,需要使用相应的命令。

服务管理器项目地址:

nanshaws/processManager: 用javafx搞了一个简单的服务管理器,可用来开启和关闭mysql等类型的服务。当前只可运行在Windows上 (github.com)

package org.example.processmanager.utils;

import java.io.IOException;
/**
 * @author cyl
 */
public class ProcessManager {
    public static void start(String name) {
        // 命令行指令,启动 name 服务
        String startCommand = "sc start "+name;
        try {
            // 启动 name 服务
            Process startProcess = new ProcessBuilder("cmd", "/c", startCommand).start();
            startProcess.waitFor();
            System.out.println(name+"服务已启动");
        } catch (IOException | InterruptedException e) {
            e.printStackTrace();
        }
    }

    public static void stop(String name){
         // 命令行指令,关闭 name 服务
         String stopCommand = "sc stop "+name;
         // 关闭 name 服务
        Process stopProcess = null;
        try {
            stopProcess = new ProcessBuilder("cmd", "/c", stopCommand).start();
            stopProcess.waitFor();
            System.out.println(name+"服务已关闭");
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }

}
目录
相关文章
|
5月前
|
开发框架 监控 安全
Windows Defender 导致 Web IIS 服务异常停止排查
某日凌晨IIS服务异常停止,经查为Windows Defender安全补丁KB2267602触发引擎更新,导致系统资源波动,进而引发应用池回收。确认非人为操作,系统无重启。通过分析日志与监控,定位原因为Defender更新后扫描加重负载。解决方案:将IIS及.NET相关路径添加至Defender排除列表,避免业务影响。
665 116
|
5月前
|
JSON 网络协议 安全
【Java】(10)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
287 1
|
5月前
|
JSON 网络协议 安全
【Java基础】(1)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
309 1
|
5月前
|
JSON Java 数据格式
java调用服务报错400
java调用服务报错400
145 6
java调用服务报错400
|
5月前
|
JSON Java 数据格式
java调用服务报错415 Content type ‘application/octet-stream‘ not supported
java调用服务报错415 Content type ‘application/octet-stream‘ not supported
360 6
|
6月前
|
IDE 安全 Java
Lombok 在企业级 Java 项目中的隐性成本:便利背后的取舍之道
Lombok虽能简化Java代码,但其“魔法”特性易破坏封装、影响可维护性,隐藏调试难题,且与JPA等框架存在兼容风险。企业级项目应优先考虑IDE生成、Java Records或MapStruct等更透明、稳健的替代方案,平衡开发效率与系统长期稳定性。
438 115
|
6月前
|
存储 小程序 Java
热门小程序源码合集:微信抖音小程序源码支持PHP/Java/uni-app完整项目实践指南
小程序已成为企业获客与开发者创业的重要载体。本文详解PHP、Java、uni-app三大技术栈在电商、工具、服务类小程序中的源码应用,提供从开发到部署的全流程指南,并分享选型避坑与商业化落地策略,助力开发者高效构建稳定可扩展项目。
|
6月前
|
安全 Java API
Java Web 在线商城项目最新技术实操指南帮助开发者高效完成商城项目开发
本项目基于Spring Boot 3.2与Vue 3构建现代化在线商城,涵盖技术选型、核心功能实现、安全控制与容器化部署,助开发者掌握最新Java Web全栈开发实践。
655 1
|
7月前
|
前端开发 Java API
2025 年 Java 全栈从环境搭建到项目上线实操全流程指南:Java 全栈最新实操指南(2025 版)
本指南涵盖2025年Java全栈开发核心技术,从JDK 21环境搭建、Spring Boot 3.3实战、React前端集成到Docker容器化部署,结合最新特性与实操流程,助力构建高效企业级应用。
2342 1
|
7月前
|
存储 数据采集 搜索推荐
Java 大视界 -- Java 大数据在智慧文旅旅游景区游客情感分析与服务改进中的应用实践(226)
本篇文章探讨了 Java 大数据在智慧文旅景区中的创新应用,重点分析了如何通过数据采集、情感分析与可视化等技术,挖掘游客情感需求,进而优化景区服务。文章结合实际案例,展示了 Java 在数据处理与智能推荐等方面的强大能力,为文旅行业的智慧化升级提供了可行路径。
Java 大视界 -- Java 大数据在智慧文旅旅游景区游客情感分析与服务改进中的应用实践(226)

热门文章

最新文章