Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    Servizio Windows non esegue Batch

    Ciao a tutti!
    ho creato un servizio di base con Visual Studio 2010 Ultimate, il quale all'avvio,allo stop e allo shutdown devono far partire uno script batch passando un parametro. Questo è quello che ho scritto nel codice:
    codice:
            protected override void OnStart(string[] args)      
       {             Process.Start("C:\\Users\\Desktop\\Batch.bat", "Start");         
    }         
     protected override void OnStop()   
          {             Process.Start("C:\\Users\\Desktop\\Batch.bat", "Stop");  
           }        
      protected override void OnShutdown()       
      {             Process.Start("C:\\Users\\Desktop\\Batch.bat", "Shutdown");         }
    Il servizio è installato, parte, si ferma e lo vedo pure nello task manager! Ma non mi avvia il file batch! Dove sbaglio?
    grazie anticipatamente...

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,465
    Un servizio Windows è generalmente privo di interfaccia e può eseguire senza necessità di effettuare il login.

    Un servizio va installato nel sistema e avviato attraverso il Service Control Manager (accessibile dal Pannello di Controllo, in Servizi).

    Non si tratta di un eseguibile equivalente a quelli che crei con Windows Forms.

    Rimane dubbia l'utilità di lanciare un file batch dal servizio: tanto vale scrivere nel servizio il codice che serve per fare lo stesso lavoro del file batch, a meno che questo file non sia talmente complesso da essere irriproducibile.

    In ogni caso, invito a documentarsi meglio sulla creazione dei servizi, su cosa sono, su come funzionano e come si realizzano con Visual Studio, prima di cimentarsi nella scrittura di codice che, ovviamente, poi non da i risultati sperati.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    Bhè sinceramente mi sono documentata e anche non poco su cosa siano i servizi e annessi e connessi, ma questa è la tua opinione e puoi pensarla tranquillamente come vuoi.
    Di certo però non mi hai dato una risposta in merito,nonostante la mia domanda sia piuttosto diretta...d'altronde sono a un buon punto
    Il servizio è installato, parte, si ferma e lo vedo pure nello task manager!
    Chiedevo semplicemente se qualcuno poteva aiutarmi...tutto qui...

  4. #4
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Forse manca il carattere @ ...

    codice:
    Process.Start(@"C:\\Users\\Desktop\\Batch.bat", "Start");

  5. #5
    intanto grazie gibra! ho provato ma purtroppo nulla..
    ora ho sto provando a lanciare il batch dando questi comandi:
    codice:
                Process p = new Process();             p.StartInfo.RedirectStandardOutput = true;             p.StartInfo.UseShellExecute = false;             p.StartInfo.FileName = @"C:\\Users\Desktop\\Batch.bat";             p.StartInfo.Arguments = "Shutdown";             p.Start();             p.WaitForExit();
    Ma purtroppo niente..però ieri sera ho inserito nel codice del mio servizio windows anche un eventLog, per poter fare almeno una specie di debug e ho notato che nel visualizzatore eventi mi ha creato correttamente nei registri applicazioni e servizi una nuova voce, però non registra alcun messaggio che gli do con il comando
    codice:
     eventLog1.WriteEntry("MioServizio Avviato");
    .... davvero non so come andare avanti..

  6. #6
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,465
    Originariamente inviato da soniettabrasile
    Bhè sinceramente mi sono documentata e anche non poco su cosa siano i servizi e annessi e connessi, ma questa è la tua opinione e puoi pensarla tranquillamente come vuoi.
    Non era un insulto, ma si evince dai fatti.
    Se ti sei documentata, probabilmente non lo hai fatto abbastanza o manca un pezzo.

    Mi spiego.


    Originariamente inviato da soniettabrasile
    Di certo però non mi hai dato una risposta in merito,nonostante la mia domanda sia piuttosto diretta...
    Io te l'ho data una risposta:

    Un servizio Windows è generalmente privo di interfaccia e può eseguire senza necessità di effettuare il login.

    Un servizio va installato nel sistema e avviato attraverso il Service Control Manager (accessibile dal Pannello di Controllo, in Servizi).

    Non si tratta di un eseguibile equivalente a quelli che crei con Windows Forms.


    Se a fronte di questa indicazione, tu continui a lanciare l'eseguibile stupendoti del fatto che si avvia e poi si arresta, significa che 1) non hai letto quello che ho scritto, 2) ti sarai anche documentata, ma non a sufficienza, perché non si lanciano così i servizi (e nella mia risposta ti ho detto come).

    Questo non esclude - preciso - che vi possano essere altri problemi oltre a quello che hai indicato, ma io parto dall'inizio.

    Se tu sei convinta che la causa del tuo problema sia un'altra, liberissima di esserlo, però a questo punto è inutile chiedere aiuto se non si accetta che la diagnosi possa essere diversa da quello che ci si è prospettato.

    Ora, potrò magari essere stato brusco e non ne avevo l'intenzione, ma non ho nemmeno voglia di essere rimproverato in questo caso per aver dato un aiuto.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  7. #7
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,465
    Originariamente inviato da gibra
    Forse manca il carattere @ ...
    codice:
    Process.Start(@"C:\\Users\\Desktop\\Batch.bat", "Start");
    Se si usa il carattere "@", i doppi backslash ("\") penso vadano rimossi dalla stringa del percorso.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  8. #8
    mi dispiace se anch'io sono risultata un po' brusca...ma ho risposto ieri sera in preda alla stanchezza più totale...forse, soprattutto, ho dato per scontato che da quello che avevo scritto si potesse evincere tutto quello che comunque fino a quel momento avevo creato.
    Per terminare cmq questo thread, e soprattutto, per aiutare qualcuno che magari si possa trovare nella mia stessa situazione, scrivo brevemente qual'era il problema.
    Per essere chiari, avevo:
    1) creato con visual studio un servizio di windows che nell'override del metodo onstart e onstop lanciassero un mio file batch creato;
    2) creato con l'utility instsrv, preso da Windows Resource Kit, un servizio generico.
    Da questa situazione, il servizio si avviava, arrestava ed era visibilissimo nello task manager. Ma non c'era verso che partisse il mio script.
    Il problema era dovuto alla creazione del servizio con il tool instsrv.Sono andata direttamente a modificare la chiave del registro con cui partiva il servizio, ossia l'image path, dandogli il path assoluto dell'eseguibile creato con visual studio. Nelle varie procedure che avevo trovato, invece, in questa chiave era presente il path all'eseguibile srvany.exe...
    Spero di essere stata chiara..se qualcuno avesse bisogno sono a disposizione per ulteriori chiarimenti!
    ciao a tutti
    ps: un mi dispiace ancora ad alka per il fraintendimento!

  9. #9
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,465
    Originariamente inviato da soniettabrasile
    ps: un mi dispiace ancora ad alka per il fraintendimento!
    No problem, anzi mi scuso anche io (e comprendo pienamente le frustrazioni quando qualcosa non ne vuole sapere di andare o si trovano risorse imprecise).

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.