suivant: Émuler une crontab sous
monter: Utiliser la base de
précédent: Installer une variable d'environnement
  Index
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 ...
suivant: Émuler une crontab sous
monter: Utiliser la base de
précédent: Installer une variable d'environnement
  Index
Olivier Aubert
1999-06-01
|