Windows Service: parte a mano ma non in automatico (account, permessi, log)

Servizi Windows, librerie DLL, componenti C/C++, bridge (es. Modbus) e interoperabilità.
Rispondi
alessandro
Messaggi: 2
Iscritto il: sab feb 08, 2025 11:12 pm

Windows Service: parte a mano ma non in automatico (account, permessi, log)

Messaggio da alessandro »

Ciao,
ho creato un servizio Windows che legge un file INI e scrive su un log.
Se lo avvio a mano da “Servizi” funziona.
Se lo imposto su Avvio automatico, al reboot a volte non parte oppure parte ma non scrive nulla.

Non capisco se è un problema di permessi o percorso file.
Quali sono le verifiche da fare?
Alessandro
fabio
Messaggi: 20
Iscritto il: gio mar 06, 2025 11:12 pm

Re: Windows Service: parte a mano ma non in automatico (account, permessi, log)

Messaggio da fabio »

Ciao Alessandro,
classico: a mano spesso lo avvii con contesto diverso rispetto all’avvio automatico.

Checklist:
1) Account del servizio (LocalSystem? utente dedicato?)
2) Permessi su cartelle/file (INI, log, eventuali share)
3) Percorsi: usa path assoluti (non relativi) perché “working dir” cambia
4) Dipendenze: se ti serve rete/DB, potrebbe partire prima che la rete sia pronta
5) Event Viewer: controlla Application/System per errori all’avvio

Se mi dici dove sono INI e log (es. C:ProgramData...), ti dico settaggio più robusto.
alessandro
Messaggi: 2
Iscritto il: sab feb 08, 2025 11:12 pm

Re: Windows Service: parte a mano ma non in automatico (account, permessi, log)

Messaggio da alessandro »

Uso LocalSystem e i file sono in C:Servizioconfig.ini e C:Serviziolog.txt
Forse al boot non ha i permessi? Ma è nella stessa cartella dell exe.
fabio
Messaggi: 20
Iscritto il: gio mar 06, 2025 11:12 pm

Re: Windows Service: parte a mano ma non in automatico (account, permessi, log)

Messaggio da fabio »

LocalSystem di solito ha permessi locali, quindi ok.
Però ti conviene:
- spostare config/log in C:ProgramDataNomeServizio
- dare ACL esplicite a quella cartella
- loggare anche su EventLog (non solo file)

E soprattutto: metti path assoluti e gestisci eccezioni all’avvio (try/catch + log).
Molte volte “non scrive” = crash all’avvio e te ne accorgi solo da Event Viewer.
Rispondi