mgille3
Messages postés7Date d'inscriptionmardi 27 janvier 2015StatutMembreDernière intervention10 février 2015
-
27 janv. 2015 à 08:18
mgille3 -
20 févr. 2015 à 12:35
Bonjour,
J'ai réalisé des services qui doivent se lancer avant que le premier utilisateur se connecte.
Le démarrage automatique ne se fait pas (Temps de démarrage > 30000 ms dans l'observateur d'évènement)
Pour analyser le problème, J'ai retiré tout traitement.
J'obtiens un service qui se lance bien lorsqu'on fait démarrer, mais ne se lance pas au démarrage du PC
Ceci ne se passe que sur Windows 7.
Ca démarre normalement sur Windows 8.
Une piste ?
sp40
Messages postés1276Date d'inscriptionmardi 28 octobre 2003StatutContributeurDernière intervention 3 juillet 201515 Modifié par sp40 le 27/01/2015 à 09:06
Salut,
Dans le gestionnaire de service, comment est défini le démarrage du service ? Est-il bien en automatique ?
Et dans ton source, est-ce que la propriété du service StartType est bien sur stAuto ?
mgille3
Messages postés7Date d'inscriptionmardi 27 janvier 2015StatutMembreDernière intervention10 février 2015 27 janv. 2015 à 12:56
Oui dans le démarrage du service il est bien en automatique, et lors du démarrage, il y a le message délai dépassé (plus de 30000 ms) dans l'observateur d'évènement.
Dans le source, il y a bien stAuto.
Il démarre automatiquement s'il est installé dans un PC windows 8
sp40
Messages postés1276Date d'inscriptionmardi 28 octobre 2003StatutContributeurDernière intervention 3 juillet 201515 27 janv. 2015 à 14:34
Hum... Est-ce que ça ne pourrait pas être une histoire de droits ?
As tu essayé d'en démarrer un en ligne de commande ?
(Net Start [Nom du service])
Essaie avec un compte d'utilisateur ET un compte d'admin
sp40
Messages postés1276Date d'inscriptionmardi 28 octobre 2003StatutContributeurDernière intervention 3 juillet 201515 29 janv. 2015 à 09:12
Regardes si tu ne peux résoudre le problème en gérant les options de sécurité de tes fichiers... (Si tu écris dans un log par exemple et que le fichier de log n'a pas les autorisations d'écriture pour les utilisateurs) C'est un peu lourd pour ça Windows... :(
mgille3
Messages postés7Date d'inscriptionmardi 27 janvier 2015StatutMembreDernière intervention10 février 2015 2 févr. 2015 à 13:38
J'ai simplifier encore, et j'ai résolu 1 problème :
Le service de détection des services interactif doit être mis en automatique sur windows 7 pour que je n'ai plus de message d'erreur dans l'observateur d'évènement.
Mon code
type
TSimple_service = class(TService)
Timer1: TTimer;
procedure ServiceStart(Sender: TService; var Started: Boolean);
procedure Timer1Timer(Sender: TObject);
procedure ServiceStop(Sender: TService; var Stopped: Boolean);
private
{ Déclarations privées }
nb_son : integer;
public
function GetServiceController: TServiceController; override;
{ Déclarations publiques }
end;
var
Simple_service: TSimple_service;
implementation
{$R *.DFM}
procedure ServiceController(CtrlCode: DWord); stdcall;
begin
Simple_service.Controller(CtrlCode);
end;
function TSimple_service.GetServiceController: TServiceController;
begin
Result := ServiceController;
end;
procedure TSimple_service.ServiceStart(Sender: TService; var Started: Boolean);
begin
nb_son := 0;
timer1.Enabled := true;
Started := True;
end;
procedure TSimple_service.ServiceStop(Sender: TService; var Stopped: Boolean);
begin
Stopped := true;
end;
procedure TSimple_service.Timer1Timer(Sender: TObject);
begin
if nb_son < 10 then
begin
inc(nb_son);
Try
logmessage('simple_service',EVENTLOG_INFORMATION_TYPE,0,nb_son);
PlaySound('C:\Windows\Media\Ring05.wav', 0, SND_SYNC);
except
if fileexists('C:\Windows\Media\Ring05.wav') then
logmessage('simple_service',EVENTLOG_INFORMATION_TYPE,0,20)
else
logmessage('simple_service',EVENTLOG_INFORMATION_TYPE,0,21);
End;
end
else
Timer1.Enabled := false;
end;
Normalement, il doit jouer 10 fois le son.
Sous Windows 8, c'est ce qui arrive.
Sous Windows 7, il démarre normalement, les messages 1 à 10 sont bien dans l'observateur d'évènement, mais pas de son
mgille3
Messages postés7Date d'inscriptionmardi 27 janvier 2015StatutMembreDernière intervention10 février 2015 10 févr. 2015 à 09:04
Finalement, le service démarre automatiquement si l'installation se fait dans la commande execute : c:\...\monservice.exe /install.
Dans windows 8, le programme d'installation marche bien, mais sous windows 7 ça fait quelque chose de différent.
Il me reste le problème des sons wav qui fonctionnent en sevice sous windows 8, mais pas sous windows 7.
Sous windows 7, la commande PlaySound('C:\Windows\Media\Ring05.wav', 0, SND_SYNC); fonctionne bien dans un programme avec une session utilisateur
sp40
Messages postés1276Date d'inscriptionmardi 28 octobre 2003StatutContributeurDernière intervention 3 juillet 201515 Modifié par sp40 le 10/02/2015 à 09:10
Désolé, là, je ne peux pas t'aider, je n'ai pas de son sur mon PC... :)
En pas à pas ça ne donne rien ? Pas d'exceptions particulières sur le log par exemple ?
Mais le son est bien joué dans un programme qui n'est pas un service. La ligne est PlaySound('C:\Windows\Media\Ring05.wav', 0, SND_SYNC). Le fichier Ring05.wav est fourni par microsoft dans les fichiers wav du répertoir Windows\media