A minha sugestão é que você crie dois arquivos *.bat. Um para parar e outro para inicializar o seriviço.
Feito isso, basta usar a classe process pra chamar o batch.
No arquivo que pára o serviço, a linha de comando é
Code Snippet
NET STOP "FireBird Server - DefaultInstance"
e o arquivo que starta o serviço:
Code Snippet
NET START "FireBird Server - DefaultInstance"
Lembrando que você precisa conferir no painel de controle > ferramentas administrativas > serviços se o nome do serviço do firebird que vc instalou é mesmo "FireBird Server - DefaultInstance". Pode ser que você tenha dado outro nome a instância.
Abaixo segue um exemplo de código que você deve usar para chamar os arquivos.
Faça as modificações para adequa-lo a sua aplicação.
//Evite deixar esse valor hardcoded. Passe-o para um arquivo de configuração (app.settings, web.config, ou uma classe serializada)
const string STARTFILE = @"c:\firebirdstart.bat";
const string STOPFILE = @"c:\firebirdstop.bat";
private void btnIniciar_Click(object sender, EventArgs e)
{
int resultado = this.StartService();
MessageBox.Show(resultado.ToString());
}
private void btnParar_Click(object sender, EventArgs e)
{
int resultado = this.StopService();
MessageBox.Show(resultado.ToString());
}
int StartService()
{
return this.ManageFirebirdService(STARTFILE);
}
int StopService()
{
return ManageFirebirdService(STOPFILE);
}
int ManageFirebirdService(string pBatchFile)
{
Process proc = Process.Start(this.GetProcess(pBatchFile));
if (proc.HasExited)
return proc.ExitCode; //Se houve algum erro, retorna o código de saída
else
return 0;
}
ProcessStartInfo GetProcess(string pFile)
{
ProcessStartInfo psi = new ProcessStartInfo(pFile);
psi.RedirectStandardOutput =
true;
psi.RedirectStandardInput =
true;
psi.UseShellExecute =
false;
psi.CreateNoWindow =
true;
return psi;
}
Grande abraço