| ||||||||
Astucien | Bonjour à tous et à toutes.. Je souhaite créer une ligne de commande pour tuer un processus en cours. J'ai fait un bat avec taskkill /f /im programme mais je ne sais pas comment le lancer. Lorsque je lance le raccourci correspondant j'ai le message suivant :
Que faire ? | |||||||
Publicité | ||||||||
|
| ||||||||
Grand Maître astucien |
pour lancer un bat, on le double-clique normalement. Colle ici la commande. ("le raccourci correspondant", c'est un raccourci vers ton bat ? Ou tu as créé un raccourci avec la commande comme cible ?) | |||||||
Astucien | yves.vaissiere a écrit : Bonjour, Avec ou sans raccourci c'est pareil j'ai toujours ce message : | |||||||
Maître astucien |
D'autre part, m'étonnerai que 'programme' corresponde à un exécutable de ton PC ... | |||||||
Astucien | enigma7 a écrit : Bonjour Déjà programme est un nom générique à titre d'exemple, il est évident que je n'ai pas mis programme. Voice la ligne de commande : taskkill /f /im clavier.exe ! Il est important de savoir que cette ligne de commande s'exécute parfaitement si je passe par une ligne de commande DOS ou terminal ! De même que n'importe autre commande terminal, aucun ne passe en Batch ! C'est en batch qu'elles sont refusées et même comme administrateur ! En réalité je cherche à tuer le programme clavier.exe qui de temps en temps a des bugs et je cherche un moyen plus rapide que passer par la barre des tâches, rechercher le programme puis le supprimer.
PS : je en comprends pas pourquoi l'écriture utilisée ici n'est pas celle définie dans mon profil qui est Verdana !
Modifié par 1000cbr le 25/01/2025 15:59 | |||||||
Maître astucien |
| |||||||
Astucien | enigma7 a écrit : Oui oui d'ailleurs sans .bat il ne se lance pas ! J'aurai aimé dire non ! | |||||||
Astucien |
Fais en sorte que la commande touchant le systeme au niveau des processus, donc avec une bonne couche de sécurité, soit exécutée en Administrateur même sous un compte Administrateur. Clique sur :
Comment est le raccourci à l'exécution maintenant ? Source:https://www.ninjaone.com/fr/blog/raccourci-invite-de-commande-elevee/
| |||||||
Astucien | J'ai une réponse de Microsoft : problème connu ! En fin de compte, je comprends le problème avec vos fichiers .bat qui ne s'ouvrent pas dans l'invite de commande. Le problème découle de la façon dont l'outil Programmes par défaut de Windows a tendance à privilégier des catégories larges telles que les navigateurs Web et les lecteurs multimédias, manquant souvent de contrôle précis sur les extensions de fichiers.Associer simplement program.bat (un fichier spécifique) à cmd.exe ne résoudra pas le problème plus large des associations de fichiers .bat et simplement ajuster la clé HKEY_CLASSES_ROOT\batfile\shell\open\command pourrait ne pas être suffisant si d'autres paramètres du registre sont corrompus.Essayons ce qui suit :1. Association en ligne de commande :- Ouvrez une invite de commande élevée (Exécuter en tant qu'administrateur).- Exécutez ces commandes :ftype batfile="cmd.exe /c %%1 %%*"assoc .bat=batfile2. Correction du registre :- Ouvrez l'Éditeur du Registre (regedit.exe).- Accédez à HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.bat- Assurez-vous que les sous-clés suivantes existent :- UserChoice : Vérifiez si sa valeur ProgId est définie sur batfile- Accédez à HKEY_CLASSES_ROOT\batfile- Assurez-vous que les sous-clés suivantes existent :- shell- shell\open- shell\open\command- La valeur (par défaut) doit être %SystemRoot%\System32\CMD.EXE /c "%1" %*3. Analyses SFC et DISM :- Ouvrez une invite de commande élevée.- Exécutez sfc /scannow (System File Checker)- Après la fin de SFC, exécutez DISM /Online /Cleanup-Image /RestoreHealth Ca n'a pas fonctionné pour les autres et pour moi non plus ! | |||||||
Maître astucien | Pfff on n'avait pas ces problèmes avec les anciens Windows... J'ai déjà utilisé en plus | |||||||
Astucien | En plus clair : En fin de compte, je comprends le problème avec vos fichiers .bat qui ne s'ouvrent pas dans l'invite de commande. Le problème découle de la façon dont l'outil Programmes par défaut de Windows a tendance à privilégier des catégories larges telles que les navigateurs Web et les lecteurs multimédias, manquant souvent de contrôle précis sur les extensions de fichiers. Associer simplement program.bat (un fichier spécifique) à cmd.exe ne résoudra pas le problème plus large des associations de fichiers .bat et simplement ajuster la clé HKEY_CLASSES_ROOT\batfile\shell\open\command pourrait ne pas être suffisant si d'autres paramètres du registre sont corrompus. Essayons ce qui suit : 1. Association en ligne de commande : - Ouvrez une invite de commande élevée (Exécuter en tant qu'administrateur). - Exécutez ces commandes : ftype batfile="cmd.exe /c %%1 %%*" assoc .bat=batfile 2. Correction du registre : - Ouvrez l'Éditeur du Registre (regedit.exe). - Accédez à HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.bat - Assurez-vous que les sous-clés suivantes existent : - UserChoice : Vérifiez si sa valeur ProgId est définie sur batfile - Accédez à HKEY_CLASSES_ROOT\batfile - Assurez-vous que les sous-clés suivantes existent : - shell - shell\open - shell\open\command - La valeur (par défaut) doit être %SystemRoot%\System32\CMD.EXE /c "%1" %* 3. Analyses SFC et DISM : - Ouvrez une invite de commande élevée. - Exécutez sfc /scannow (System File Checker) - Après la fin de SFC, exécutez DISM /Online /Cleanup-Image /RestoreHealth
| |||||||
Grand Maître astucien | Bonjour, Au cas où tu n'aurais pas d'autre solution reste la transformation en script vbs (ou powershell mais là je ne maîtrise pas).. En cas que, je te mettrais le code. | |||||||
Astucien | fgondard a écrit : Au départ j'avais opté pour le VB mais s'il c'est plus long que de faire la suppression depuis la barre des taches ce n'est plus intéressant : Mets moi quand même le code, il pourra me servir dans d'autres circonstances. | |||||||
Grand Maître astucien | Voici le script, très minimaliste, promis. '------------------------------------------------------------------------------------------!
' EXÉCUTION PROGRAMME EN LIGNE DE COMMANDE (MODE ADMINSITRATEUR) !
' !
' Auteur : Heffgé Date : janvier 2025 !
' !
' Mettre le nom du programme à exécuter dans la variable cmd ! !
'------------------------------------------------------------------------------------------!
' Initialisation variables
'-------------------------
cmd = "ipconfig"
'Le script se relance lui-même en mode admministrateur
'-----------------------------------------------------
If WScript.Arguments.length = 0 Then
Set monShell = CreateObject("Shell.Application")
monShell.ShellExecute "wscript.exe", Chr(34)& WScript.ScriptFullName & Chr(34) & " uac", "", "runas", 1
Else
' À la relance
'-------------
Set MonShell = WScript.CreateObject("WScript.Shell")
MonShell.run cmd, 1 , True
msgbox "Terminé"
End If
Ici j'ai mis ipconfig comme programme à exécuter juste pour tester. Ne pas oublier le chemin d'accès si nécessaire.Le lancement est à deux étages pour que le programme s'exécute en mode administrateur.
| |||||||
Astucien | merci c'est sympa. | |||||||
Astucien | Je reviens à ma question et remercie tous ceux qui ont pris le temps d'essayer à résoudre mon problème. Je récapitule : j'ai un petit programme (clavier+) qui est très pratique que j'utilise à longueur de journée. Le problème est que de temps en temps il annule la possibilité de saisir de données à l'écran. Donc je fais appel à la barre des tâches et supprime le processus correspondant. Ensuite je le relance (icône dans barre des tâches). Donc j'ai fait 2 manœuvres pour le supprimer et un clic sur la barre des tâches pour le relancer. Dans toutes les autres possibilités envisagées j'aurai au minimum plus de manipulations à faire pour le même résultat. J'ai essayé avec WSL pour linux, c'est plus long. Je pense qu'utiliser VB doit l'être également. Si W11 acceptait une commande batch - ce que je croyais, ça serait bien mais ça ne fonctionne pas. Donc à moins d'un miracle, je vais rester sur ma solution. Je le fais quand même plusieurs fois par jour. Malheureusement le concepteur ne répond pas à ma demande. Cordialement.
| |||||||
Astucien | J'ai demandé à copilot :
Et ensuite :
Moi, je verrais les permission, du programme clavier. Le programmeur, a sans doute fait en sorte qu'on ne puisse pas le fermer, avec une commande BAT... | |||||||
Grand Maître astucien |
'------------------------------------------------------------------------------------------!
' EXÉCUTION PROGRAMME EN LIGNE DE COMMANDE (MODE ADMINSITRATEUR) !
' !
' Auteur : Heffgé Date : janvier 2025 !
' !
' Mettre le nom du programme à exécuter dans la variable cmd ! !
'------------------------------------------------------------------------------------------!
' Initialisation variables
'-------------------------
cmd = "taskkill /f /im clavier.exe"
'Le script se relance lui-même en mode admministrateur
'-----------------------------------------------------
If WScript.Arguments.length = 0 Then
Set monShell = CreateObject("Shell.Application")
monShell.ShellExecute "wscript.exe", Chr(34)& WScript.ScriptFullName & Chr(34) & " uac", "", "runas", 1
Else
' À la relance
'-------------
Set MonShell = WScript.CreateObject("WScript.Shell")
MonShell.run cmd, 1 , True
msgbox "Terminé"
End IfModifié par yves.vaissiere le 28/01/2025 17:43 | |||||||
Grand Maître astucien |
Là c'est le marteau pilon pour écraser une mouche. Un script VBS (VB c'est autre chose) c'est l'équivalent d'un script bat avec un peu plus de souplesse. Même si ça déroule cent fois plus d'insructions, dans le cas présent c'est instané. Et bat ou VBS, dans un cas comme dans l'autre il faut répondre à la demande d'autorisation, sauf à désactiver l'UAC ce qui n'est pas forcément conseillé. Mais d'apès ce que tu dis ce dont tu aurais plutôt besoin c'est d'un script travaillant en bascule. Qui arrête ton programme ou le relance selon qu'il est en cours de fonctionnement ou non. C'est tout à fait réalisable. Modifié par fgondard le 28/01/2025 18:31 | |||||||
Grand Maître astucien |
. (pour l'exécution en admin, j'avais noté : If WScript.Arguments.length =0 Then Set objShell = CreateObject("Shell.Application") objShell.ShellExecute "WScript.exe", Chr(34) & _ WScript.ScriptFullName & Chr(34) & " uac", "", "runas", 1 Else [et ici le script normal] End If ) Modifié par yves.vaissiere le 28/01/2025 17:52 | |||||||
Astucien | Donc, c'est l'UAC, qui bloque ! Non ? Il n'a pas un filtre, pour autoriser la fermeture sans demande UAC d'un programme spécifique ? | |||||||
Grand Maître astucien |
Modifié par yves.vaissiere le 28/01/2025 17:55 | |||||||
Astucien | J'ai posé la question, encore, à Copilot. Voici sa suggestion :
| |||||||
Grand Maître astucien | Grâce à un racourci on peu lancer systématiquement un script bat ou Powershell en mode administrateur mais ce n'est pas possible pour un script VBS. Il faut utiliser l'artifice que j'ai mis en œuvre dans celui-ci. Mais même si un script esr exécuté en mode administrateur l'UAC demande confirmation avant exécution.
Et c'est réalisé. '------------------------------------------------------------------------------------------!
' ARRÊT / LANCEMENT PROGRAMME EN LIGNE DE COMMANDE (MODE ADMINSITRATEUR) !
' !
' Auteur : Heffgé Date : janvier 2025 !
' !
' Mettre le nom du programme à exécuter dans la variable prog ! !
'------------------------------------------------------------------------------------------!
' Initialisation variables
'-------------------------
prog = "cmd.exe"
'Le script se relance lui-même en mode admministrateur
'-----------------------------------------------------
If WScript.Arguments.length = 0 Then
Set monShell = CreateObject("Shell.Application")
monShell.ShellExecute "wscript.exe", Chr(34)& WScript.ScriptFullName & Chr(34) & " uac", "", "runas", 1
Else
' À la relance
'-------------
Set monShell = CreateObject("WScript.Shell")
If GetObject("winmgmts:").ExecQuery("Select * From Win32_Process Where Description = """ & prog & """").Count > 0 Then
monShell.Run "taskkill /IM " & prog & " /F /T", ,True
msg = prog & " a été arrêté"
Else
monShell.Run prog
msg = prog & " a été lancé"
End If
msgbox msg
End If
Modifié par fgondard le 28/01/2025 21:19 | |||||||
Astucien | philumax a écrit : Tout cela je l'ai fait. Mon .bat correspond au tien mais W11 n'accepte pas de lancer des fichier .bat ! J'ai expliqué cela précédemment !
| |||||||
Astucien | fgondard a écrit : Bonjour Et comment exécuter cette routine, en lançant un .BAT mais W11 n'accepte pas de lancer des .BAT ! | |||||||
Grand Maître astucien |
Si c'était le cas je pense que ça se saurait. Ici c'est un fichier bat qui ne lance pas sur ton ordinateur. As tu essayé avec un autre script, par exemple echo bonjour et pause.
Un script vbs est un fichier texte doté de l'extension vbs. Tu copies le code dans un fichier texte vide et tu l'enregistres là où tu veux, sous le nom que tu veux mais en spécifiant ANSI pour l'encodage. Windows Scripting Host ne reconnaît pas l'encodage UTF-8. Tel quel c'est la console (cmd) qui est ouverte. Tu modfies le contenu de la variable prog pour l'adapter à ton cas. Un script VBS se lance comme n'importe quel autre programme, double clic sur le nom du fichier ou sur un raccourci pointant sur le fichier. | |||||||
Astucien | fgondard a écrit : j'ai essayé bien sûr sans succès ! mais tu n'as pas vu la position de Microsoft que j'ai postée : J'ai une réponse de Microsoft : problème connu ! En fin de compte, je comprends le problème avec vos fichiers .bat qui ne s'ouvrent pas dans l'invite de commande. Le problème découle de la façon dont l'outil Programmes par défaut de Windows a tendance à privilégier des catégories larges telles que les navigateurs Web et les lecteurs multimédias, manquant souvent de contrôle précis sur les extensions de fichiers.Associer simplement program.bat (un fichier spécifique) à cmd.exe ne résoudra pas le problème plus large des associations de fichiers .bat et simplement ajuster la clé HKEY_CLASSES_ROOT\batfile\shell\open\command pourrait ne pas être suffisant si d'autres paramètres du registre sont corrompus.Essayons ce qui suit :1. Association en ligne de commande :- Ouvrez une invite de commande élevée (Exécuter en tant qu'administrateur).- Exécutez ces commandes :ftype batfile="cmd.exe /c %%1 %%*"assoc .bat=batfile2. Correction du registre :- Ouvrez l'Éditeur du Registre (regedit.exe).- Accédez à HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.bat- Assurez-vous que les sous-clés suivantes existent :- UserChoice : Vérifiez si sa valeur ProgId est définie sur batfile- Accédez à HKEY_CLASSES_ROOT\batfile- Assurez-vous que les sous-clés suivantes existent :- shell- shell\open- shell\open\command- La valeur (par défaut) doit être %SystemRoot%\System32\CMD.EXE /c "%1" %*3. Analyses SFC et DISM :- Ouvrez une invite de commande élevée.- Exécutez sfc /scannow (System File Checker)- Après la fin de SFC, exécutez DISM /Online /Cleanup-Image /RestoreHealth Ca n'a pas fonctionné pour les autres et pour moi non plus ! | |||||||
Astucien | fgondard a écri
je vais essayer cela ! | |||||||
| ||||||||