如何从Java应用程序中查找Windows服务的状态?

bluesky1年前 ⋅ 177 阅读

ChatGPT的回答仅作参考:

可以使用Java的ServiceController类来查找Windows服务的状态。以下是一个示例代码:

```java
import java.io.IOException;
import java.util.Scanner;

import com.sun.jna.platform.win32.Advapi32Util;
import com.sun.jna.platform.win32.Win32Exception;
import com.sun.jna.platform.win32.WinNT;
import com.sun.jna.platform.win32.WinService;

public class ServiceStatusChecker {

    public static void main(String[] args) throws IOException {
        Scanner scanner = new Scanner(System.in);
        System.out.print("Enter service name: ");
        String serviceName = scanner.nextLine();
        scanner.close();

        WinNT.HANDLE serviceHandle = Advapi32Util.openService(WinNT.SC_MANAGER_CONNECT, serviceName, WinNT.SERVICE_QUERY_STATUS);
        WinNT.SERVICE_STATUS serviceStatus = new WinNT.SERVICE_STATUS();
        if (WinService.QueryServiceStatus(serviceHandle, serviceStatus)) {
            System.out.println("Service status: " + serviceStatus.currentState);
        } else {
            throw new Win32Exception(WinNT.ERROR_SERVICE_NOT_ACTIVE);
        }
    }

}
```

该代码使用JNA库来访问Windows API,并使用ServiceController类来打开服务并查询其状态。要使用该代码,您需要将JNA库添加到您的项目中。

全部评论: 0

    相关推荐