next up previous index
suivant: Émuler une crontab sous monter: Utiliser la base de précédent: Installer une variable d'environnement   Index

Installer un Script perl en tant que service (NT seulement)

Un service NT répond à un interfaçage de message pour le démarrage, la mise en pause et l'arrêt. Un script seul ne peut donc être installé.

Le NT Ressource Kit 3 fournit INSTSRV et ANYSRV, le premier installant le second qui est l'interface service.

Comme exemple on crée un service appelé PerlService :


`c:\\peliproc\\instsrv.exe PerlService c:\\peliproc\\srvany.exe`;

Cela installe une entrée dans la base de registres. Vous pouvez alors finir l'installation à la main comme spécifié dans la documentation de ces outils ou modifier via Win32::Registry les entrées :


$p = "SYSTEM\\CurrentControlSet\\Services\\PerlService";
$main::HKEY_LOCAL_MACHINE->Open($p,$srv)||die "open: $!";

et maintenant créer la clef Parameters contenant

Application
le chemin complet vers le script
AppParameters
les paramètres d'exécution
AppDirectory
le chemin d'où il sera lancé

ce que l'on fait ainsi :


$srv->Create("Parameters", $param) or die "Create: $!";
$param->SetValueEx("Application", 0, REG_SZ, "c:\\perlproc\\scan.cmd");
$param->SetValueEx("AppParameters", 0, REG_SZ, "2>c:\\temp\\toto.out");
$param->SetValueEx("AppDirectory", 0, REG_SZ, "c:\\perlproc\\");

On lance donc scan.cmd dans le répertoire c:\perlproc (N.B. :: il faut répéter le #2830#> séparateur de répertoire sous NT, qui sert à 'échapper' i.e. utiliser les caractères spéciaux sous perl, donc pour avoir #2831#> on le double: \\).

L'argument est 2>c:\temp\toto.out, on redirige la sortie erreur standard (STDERR sous perl, descripteur de fichier numéro 2 sous tout les O.S.) vers un fichier.

Maintenant il faut pouvoir démarrer le service.


`d:\\winnt\\system32\\net.exe start PerlService`;

La seule chose que cet exemple passe sous silence est que le service est démarré avec le compte SYSTEM qui sous NT a plus de priorités que les autres comptes, même Administrator. Il est possible en modifiant la base de Registres de spécifier un autre utilisateur, mais ... il faut rentrer un mot de passe, ce que je ne sais pas faire via la base de registres ...


next up previous index
suivant: Émuler une crontab sous monter: Utiliser la base de précédent: Installer une variable d'environnement   Index
Olivier Aubert
1999-06-01