Estoy escribiendo una utilidad para iniciar y detener servicios de Windows. El programa se distribuirá en muchas computadoras con diferentes niveles de privilegios de usuario, por lo que no quiero usar la línea de comando. He intentado usar el JNA,Servicios de inicio/detención usando JNA
import com.sun.jna.platform.win32.W32Service;
import com.sun.jna.platform.win32.W32ServiceManager;
import com.sun.jna.platform.win32.Winsvc;
/**
*
* @author
*/
public class WindowsServices {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
try
{
// TODO code application logic here
W32ServiceManager serviceManager = new W32ServiceManager();
W32Service service = serviceManager.openService("uvnc_service", Winsvc.SERVICE_ACCEPT_STOP);
service.stopService();
service.close();
}
catch (Exception ex)
{
ex.printStackTrace();
}
}
}
Cuando ejecuto el programa me sale el siguiente error
com.sun.jna.platform.win32.Win32Exception: El identificador no es válido. en com.sun.jna.platform.win32.W32ServiceManager.openService (W32ServiceManager.java:77) en windowsservices.WindowsServices.main (WindowsServices.java:26)
Cualquier sugerencia sería de gran ayuda.
Esto es genial, no sabía que pudiera controlar los servicios de Windows tan fácilmente con JNA. – tmbrggmn
El único problema que encontré con este método es que cuando intenta detener los servicios, debe proporcionar bloqueos adicionales try/catch porque algunos servicios tardan un tiempo en pasar de ejecutarse a detenerse. – GEverding
Usted suhold agrega la respuesta como una respuesta válida – gavioto