Изменить имя пользователя и пароль для существующей службы Windows в Java через Advapi32 (JNA API) - PullRequest
0 голосов
/ 13 ноября 2018

Я пытался изменить конфигурацию для существующей службы Windows через API JNA, в частности, через класс com.sun.jna.platform.win32.Advapi32, но не смог найти достаточно документации для этого.

То же самое можно сделать, запустив 'Команда sc 'в Windows CMD:

sc config "MyServiceName" obj="domain\windowsuser" password= "userpassword"

До сих пор я дошел до выяснения Java-кода (работа в процессе):

private static void printAllServices(String username, String password) {
    boolean success = false;
    SC_HANDLE serviceManager = openServiceControlManager(null, Winsvc.SC_MANAGER_ALL_ACCESS);
    if (serviceManager != null) {
        SC_HANDLE service = Advapi32.INSTANCE.OpenService(serviceManager, "MyServiceName",
                WinNT.GENERIC_EXECUTE);
        if (service != null) {
            SERVICE_STATUS serviceStatus = new SERVICE_STATUS();
            success = Advapi32.INSTANCE.ControlService(service, Winsvc.SERVICE_CHANGE_CONFIG, serviceStatus);
            Advapi32.INSTANCE.CloseServiceHandle(service);
        }
        Advapi32.INSTANCE.CloseServiceHandle(serviceManager);
    }
}

private static SC_HANDLE openServiceControlManager(String machine, int access) {
        return Advapi32.INSTANCE.OpenSCManager(machine, null, access);
    }

Моя цель - изменитьимя пользователя / пароль, под которым существующая служба Windows работает через Java API (но не путем непосредственного выполнения команды 'sc', а через JNA API).

Будет полезен любой свет в правильном направлении (или ссылка на документацию).

1 Ответ

0 голосов
/ 15 ноября 2018

Поскольку в Advapi32, по-видимому, отсутствует JNA API, был выполнен вызов script.exe (с передачей необходимых аргументов), который содержит код C #, который выполняет DllImport для "advapi32.dll" и использует API-интерфейсы при следующих импорте

using System.Runtime.InteropServices;
using System.ComponentModel;

Для справки: https://www.morgantechspace.com/2015/03/csharp-change-service-account-username-and-password.html

...