2015-10-20 17 views
7

Ho scritto un servizio Windows che funziona e COMINCIA bene nella maggior parte dei sistemi operativi. Ho ristretto il fatto che Windows 10 aggiornato da Windows 8 causa un problema in cui il servizio non si avvia al riavvio quando il servizio è impostato su automatico. Trovo che l'avvio ritardato funzioni correttamente. Mi chiedevo se qualcuno conoscesse le sfumature tra un'installazione completa da zero e un aggiornamento che potrebbe indicare il restringimento di questo problema elusivo.Servizio Windows non avviato con l'aggiornamento a Windows 10

Quando non funziona non ci sono registri o eventi generati. Sembra non provare e fallire, ma non correre (start).


Ho appena imbattuto in un'installazione in cui funziona benissimo e il sistema operativo è stato aggiornato da Windows 8. Sembra che ci sia una certa dipendenza che è diverso. Il servizio è stato scritto contro .Net Framework 4.0 x86. Il servizio si avvia manualmente alla perfezione. L'avvio automatico (all'avvio) non funziona. Stavo per dire che fallisce, ma non è così, perché non sembra nemmeno provarci.

+0

Sembra che la tua premessa è _ "Se si esegue l'aggiornamento di Windows 8 a Windows 10 i servizi di auto-installato che sono impostata su 'automatico' non iniziare quando il riavvio della macchina" _, che ovviamente non è vero. Se lo fosse, sarebbe un grosso problema che altri avrebbero incontrato prima di te. Non riesco a credere che non venga generato nessun messaggio del registro eventi singolo. Sei sicuro di questo? – CodeCaster

+0

Non ci sono eventi generati. – Jeff

+0

Ho esattamente lo stesso problema, non ancora riuscito a capire in quali circostanze si riproduce. Il registro di Windows mostra un errore di timeout, ma nessuno dei miei log di log4net viene prodotto. – msshapira

risposta

1

Abbiamo un problema simile in cui uno dei nostri servizi (.net) non si avvia automaticamente in alcuni casi dopo l'aggiornamento a Windows 10. Inoltre, in un certo numero di situazioni il problema è stato risolto dopo l'aggiornamento a Windows build 10.0.10240 ; non in ogni caso però. Nessun errore nel registro eventi neanche.

Aggiornamento: in alcuni casi anche la partenza ritardata sembra funzionare.

3

Abbiamo riscontrato un problema simile a Windows 10 in cui la maggior parte dei servizi basati su .Net fallirebbero all'avvio, ma potrebbero essere avviati manualmente in seguito. Per qualche motivo, i servizi scritti in .NET richiedono più tempo per avviarsi in Windows 10. Per impostazione predefinita, se un servizio richiede più di 30 secondi per avviarsi senza rispondere, il servizio viene terminato da Windows. Questo è non un avvio ritardato, ma un aumento del tempo dato ai servizi per rispondere dopo l'avvio.

Sono stato in grado di modificare tale comportamento a 60 secondi nel Registro di sistema. Vai a:

HKLM \ SYSTEM \ CurrentControlSet \ Control \

Se non esiste già, creare una chiave (32-bit) chiamato "ServicesPipeTimeout" (meno le virgolette) DWORD. Impostare il suo valore su 60000 (in decimale). Questo è correlato a 60 secondi in millisecondi.

Ho anche creato un regfile per automatizzare questo:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control] "ServicesPipeTimeout" = dword: 0000ea60

Basta incollare il blocco note e salvarlo come file .reg.

Questo ha risolto il problema per noi su più macchine. Fammi sapere se questo aiuta. Sfortunatamente, non so ancora perché i servizi .NET impieghino così tanto tempo per essere terminati. Tuttavia, penso che questo sia un bug di Microsoft, e non necessariamente qualcosa che gli utenti stanno facendo male ...

+1

invece di modificare il registro da soli, se utilizzare un avvio ritardato non funziona per te, potresti vai alle proprietà del servizio e prova il ripristino del servizio. sotto la scheda ripristino hai le opzioni su cosa fare quando il servizio non riesce ad avviarsi. potresti infatti provare a riavviarlo con un ritardo ("riavvia il servizio dopo X minuti"). –

0

Abbiamo anche lo stesso problema con un servizio di Windows C++ che abbiamo creato. L'avvio automatico funziona bene per la maggior parte delle persone.Tuttavia, ora abbiamo 5 istanze in cui il servizio del cliente funzionava correttamente e ora non si avvierà automaticamente.

L'unica cosa che sembra funzionare è l'avvio ritardato, ma questa non è una buona opzione perché vorremmo che il servizio fosse avviato immediatamente. Abbiamo anche provato ad aggiungere la dipendenza del servizio di NetLogon, che non ha funzionato.

Si noti inoltre che questo funzionava correttamente per i clienti e ad un certo punto (aggiornamento di Windows forse?) Si è appena fermato automaticamente all'avvio.

I clienti possono anche accedere ai servizi e avviare il servizio manualmente, e funziona. Seguirò questa discussione e sperando in una soluzione migliore rispetto alla partenza ritardata.

0

Che ha risolto il tutto per noi, se è possibile modificare il servizio eseguibile da soli:

Nel cambiamento del file di progetto Preferisco 32 bit bandiera a falso, quindi reinstallare il servizio.

Controlla il tuo servizio con CorFlags.exe. Il 32BITREQ e 32BITPREF dovrebbero essere 0.

Version : v4.0.30319 
CLR Header: 2.5 
PE  : PE32 
CorFlags : 0x1 
ILONLY : 1 
32BITREQ : 0 
32BITPREF : 0 
Signed : 0