Le script en tant que programme de mise à jour (SAU) est requis si un fichier script doit apporter des modifications au système solidifié. Il est nécessaire de modifier le fichier consolidé et d’exécuter des fichiers non solidifiés. Tous les script configurés en tant que programme de mise à jour n’obtiennent pas le privilège de programme de mise à jour
dans certains cas.
Exemple et explication :
Les fichiers de script ne sont pas exécutés comme d’autres fichiers exécutables ou fichiers binaires. Ils sont exécutés via le processus de l’interpréteur (binaire) qui comprend les commandes ou les scripts du fichier. Par exemple,
cmd.exe et
explorer.exe sont des processus d’interpréteur pour
.bat et
.cmd fichiers et
cscript.exe est un processus d’interpréteur pour les fichiers. vbs.
Il se peut que les utilisateurs ne voient pas directement cette différence, car Windows s’en charge en mappant le script à l’interpréteur nécessaire.
Par exemple, supposons que trois fichiers bat
test1.bat, test2.bat et
test3.bat sont créés avec le contenu comme ci-dessous :
test1. bat :
echo "11111"
test2. bat :
echo "22222"
test3. bat :
copie/y test1. bat test2. bat
Consolidez tous les fichiers et effectuez
test3.bat en tant que programme de mise à jour. Si
test3.bat est exécuté à l’aide d’un double-clic ou
cmd /c test3.bat, la copie est réussie. Si l’invite de commande s’exécute à partir de
> test3. bat, Echec de la copie.
Si vous consultez les journaux générés de façon étroite pour les deux cas, procédez comme suit :
Lorsque le script est exécuté dans le même processus :
Dans l’exemple, la script est exécutée directement à partir de l’invite de commande en tant que
script_name >.
L’événement suivant apparaît dans les journaux solidcore :
Lors de l’exécution du script à partir du même processus
MACC ne permet pas au processus de modifier le fichier consolidé.
test2.bat, car après une saisie utilisateur dans un processus, l’autorisation de programme de mise à jour ne doit pas être autorisée pour ce processus. Nous ne pouvons pas déterminer si un script est en cours d’exécution ou si l’utilisateur lui en donne directement une commande. Ce type d’exécution est donc bloqué en raison de problèmes de sécurité.
Lorsque le script est exécuté dans un nouveau processus :
Dans l’exemple, double-cliquez ou exécutez
script_name cmd/c a partir de l’invite de commande pour exécuter le script.
L’événement suivant apparaît dans les journaux solidcore (s3diag. log) :
Lorsque le script exécute un nouveau processus :
MACC permet au processus de modifier uniquement le fichier solidifié dans ce cycle de vie de processus spécifique. Double-cliquez et "
cmd /c script_name«les deux génèrent un nouveau processus pour l??exécution du script. De plus, ce processus se voit accorder l’autorisation de mise à jour jusqu’à son arrêt. Ces autorisations ne sont pas transmises aux processus enfants, contrairement aux processus de programme de mise à jour habituels. Nous obtenons un journal modifié de fichier, comme indiqué dans le journal ci-dessus, qui contient l’ID de workflow qui a été utilisé pour modifier le fichier consolidé.