Я пытался изменить конфигурацию для существующей службы 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).
Будет полезен любой свет в правильном направлении (или ссылка на документацию).