Le service Windows est écrit en Go et tente de créer un processus de calculatrice dans le contexte utilisateur en utilisant CreateProcessAsUserW()
.
Son code s'inspire de l'essentiel :
https://gist.github.com/LiamHaworth/1ac37f7fb6018293fc43f86993db24fc#file-native-go
La plupart du temps, l'application de calculatrice se lance chez l'utilisateur actif ; cependant, parfois l'application ne parvient pas à se lancer sans CreateProcessAsUserW()
renvoyer une erreur.
L'inspection à l'aide de Procmon a révélé qu'au lancement de l'application Calculatrice, l'application s'est écrasée et a eu recours à la collecte des dumps WerFault. Malheureusement, je ne vois pas de dump détaillé dans le journal des événements.
Crash WerFault observé dans ProcMon
Traces de pile détaillées pour le lancement de 3 applications de calculatrice similaires à l'aide de CreateProcessAsUserW
- les deux premières ont réussi, la troisième a échoué
Cette erreur est de nature aléatoire, ce qui ne rend pas l'application fiable. Je n'ai aucune idée de quoi/comment déboguer à partir d'ici et j'apprécierais vraiment toute aide.
L'erreur semble se produire en raison d'un mauvais environnement de compilation où les binaires créés avec x64 sont exécutés sur arm64. Merci pour la contribution de tous
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!