Para e Iniciar Serviços do Windows?

Pessoal é possível manipular os serviços do windows com aplicações java?
estou interessado em fazer uma aplicação com interface gráfica e o usuario escolher
o serviço que deseja parar.

se for possível, quanto remotamente essa aplicação pode também operar em computadores
a distância? obrigado

desculpe postar novamente… mas faltou dizer algo. a interface já montei… com as opções dos serviços a serem startados os parados e em seguida o ip externo : a porta de acesso ao equipamento remoto que
deseja manipular os serviço. se for possível fazer isso com certeza eu vou adorar mais ainda o JAVA.
valeu!

Cara, você provavelmente vai ter que usar um comando DOS para iniciar e parar o serviço.
O comando que conheço para isso é o net.exe:

net.exe opcao serviço

Por exemplo, para iniciar o postgre em minha máquina, executo um batch dos com o comando:

net.exe start pgsql-8.3

Para encerrá-lo:

net.exe stop pgsql-8.3

Existe um método definido em System que solicita ao sistema a execução de um programa externo, sugiro que você pesquise sobre este método e execute o net.exe passando os parâmetros desejados.
Apenas para deixar bem claro: seu software passará a ser Windows-based.

Edit: Faltou falar: o serviço a que me refiro na linha “net.exe opcao serviço” é o nome do serviço dentro do windows.

valeu cara… valeu mesmo vou tentar implementar aqui… quanto a fazer essa tarefa acessando remotamente alguma máquina, vc sabe se existe alguma classe que trata acessos remoto? obrigado

Depende de como você gostaria de implementar esta comunicação.
Pode ser feita no estilo cliente servidor utilizando sockets, pode fazer com um sistema distribuído utilizando RMI ou Web Service, mas acho que isso adicionaria uma complexidade desnecessária.
A sugestão é trabalhar com sockets mesmo.

valeu cara muito obrigado pelas informaçõe vou pesquisar um pouco no google a respeito de sockets que nem tenho idéia de como funciona… valeu

Pode-se usar o comando sc também.

Por exemplo, sc start MySQL5, inicia o serviço chamado MySQL5.

[]´s

Valeu cara, eu consegui já criar esta parte do programa, o que no momento estou tentando fazer é me conectar com máquinas externas. consegui algumas informações para utilizar o “Socket”… porém
nesta primeira linha de código que segue. tenho uma duvida, que até então não consegui respostas…
eu preciso me conectar com uma máquina de “ip externo : porta 3389 e 3390” liberadas para acesso
remoto. a minha duvida é? eu consigo me conectar realmente com ip externo passando pelo um roteador já setado com esse ip fixo e liberado as portas 3389 e 3390 para acesso as máquinas? e se sim
precisarei informar o usuario e senha, como no serviço do windows de acesso remoto para ter acesso?

Desculpem- me o borbardeio de perguntas, é que realmente não entendi o que pode ainda ser feito com o “Socket”. pois a minha intenção ao acessar os equipamentos é manipular os serviços do windows de cada máquina de onde estou, “parar” “startar” pelo próprio programa que consegui fazer com ajuda de vcs… obrigado pessoal se alguém tiver uma luz me ajude… obrigado denovo.

//Crio um socket
Socket socket = new Socket(“ip”, porta);

        //Crio o fluxo para o envio de dados
        OutputStream saida = socket.getOutputStream();            
        PrintStream escrita = new PrintStream(saida);

E ae pessoa consegui, o que queria agora eu já consigo manipular os serviços do windows do outro máquina pela minha., já tá funcional depois de muita pesquisa e batalha… agora sei que venho pedindo muito, mas se me passarem esta informação se souberem não encho mais… ehehe, ai vai…

é possivel buscar o “status” dos serviços atraves de algum comando no prompt.

exemplo var = coloca status e nome do serviço, e estas informações serem passadas atráves do canal do socket à minha máquina para saber se o serviço esta iniciado ou parado? valeu

[quote=binhole]E ae pessoa consegui, o que queria agora eu já consigo manipular os serviços do windows do outro máquina pela minha., já tá funcional depois de muita pesquisa e batalha… agora sei que venho pedindo muito, mas se me passarem esta informação se souberem não encho mais… ehehe, ai vai…

é possivel buscar o “status” dos serviços atraves de algum comando no prompt.

exemplo var = coloca status e nome do serviço, e estas informações serem passadas atráves do canal do socket à minha máquina para saber se o serviço esta iniciado ou parado? valeu[/quote]

A resposta é você usar o

sc query [nomeServico]

Aí vc pega a reposta no java pelo Runtime

valeu cara

Olha BetoSlayer eu tentei com o seguinte comando e apareceu algo bizarro no Servidor:

java.lang.processImpl@d9f9c3… o que fiz errado?


 Process  escrita = Runtime.getRuntime().exec("sc query cisvc"); //Status do Serviço de Indexação do windows
	      
                System.out.println(escrita);

Alguém pode por favor me responder?

Com System.out.println(escrita) você está imprimindo a referência na memória a esse objeto “escrita”, que são esses “códigos hexadecimais estranhos”.

Não conheço os métodos da classe Process… mas dá uma olhada na documentação da classe e vê algum método que retorne o resultado que você quer.