Как использовать TASKKILL для 32-разрядных приложений в 64-разрядной среде Windows?

когда пользователь запускает 32-разрядное приложение .Net в 64-разрядной среде, в диспетчере задач отображается с другим именем.

например, если мое имя приложения-это Shipnet.Shell.exe в диспетчере задач он отображается SH7910~1.exe*32. Из-за этого изменения имени не удается выполнить команду TASKKILL.

Как я могу получить правильное имя с TASKKILL?

некоторые справочная информация:

мы имеем продукт наследия начатый в проявителе 4.2 команды Centura (Gupta Sql Windows).
Из нашего устаревшего продукта мы можем вызывать 32-разрядные приложения .Net. Мой продукт очень огромный и имея сотни приложений, разработанных в Центура и .Чистая. Пользователь может запускать несколько приложений из главного меню (Центура и .Нетто). Есть меню Выход в Главное меню. Когда пользователь нажимает это меню, наш продукт закрывает все приложения Centura и .Net.
Centura позаботится о своем собственном применении в заключительном процессе. Мы используем команду TASKKILL, чтобы закрыть все приложения .Net запущенный из нашего продукта. Это прекрасно работает с 32-разрядной средой Windows. Когда мы развертываем то же самое в 64-разрядной среде Windows, наш продукт не в состоянии закрыть приложения.Net. Причина в том, что команда TASKKILL не может получить правильное имя приложения.

28
задан Arjan
04.05.2023 22:40 Количество просмотров материала 2606
Распечатать страницу

2 ответа

можно использовать TASKLIST чтобы получить PID по заголовку окна, имени процесса или другим критериям, таким как:

tasklist /FI "WINDOWTITLE eq notepad"

это будет список всех процессов, из которых имя окна равна "Блокнот".

пример:

C:\windows\system32>tasklist /FI "WINDOWTITLE eq Untitled - Notepad"

Image Name                     PID Session Name        Session#    Mem Usage
========================= ======== ================ =========== ============
notepad.exe                   1876 Console                    1      7,156 K

доступные фильтры:

Filters:
    Filter Name     Valid Operators           Valid Value(s)
    -----------     ---------------           --------------------------
    STATUS          eq, ne                    RUNNING |
                                              NOT RESPONDING | UNKNOWN
    IMAGENAME       eq, ne                    Image name
    PID             eq, ne, gt, lt, ge, le    PID value
    SESSION         eq, ne, gt, lt, ge, le    Session number
    SESSIONNAME     eq, ne                    Session name
    CPUTIME         eq, ne, gt, lt, ge, le    CPU time in the format
                                              of hh:mm:ss.
                                              hh - hours,
                                              mm - minutes, ss - seconds
    MEMUSAGE        eq, ne, gt, lt, ge, le    Memory usage in KB
    USERNAME        eq, ne                    User name in [domain\]user
                                              format
    SERVICES        eq, ne                    Service name
    WINDOWTITLE     eq, ne                    Window title
    MODULES         eq, ne                    DLL name

затем вы можете использовать taskkill и укажите PID.

TASKKILL /PID 1230 /PID 1241 /PID 1253 /T

/t завершает процессы и ее ребенка, /PID указывает идентификатор процесса.

если у вас есть PowerShell можно использовать Stop-Process <pid> (например,Stop-Process 3512) или Stop-Process -processname notepad

дополнительная информация здесь по команде Stop-Process.

было бы очень полезно, если бы вы указали имя ОС, на котором вы столкнулись с проблемой, это очень необычно, что имена усекаются в стиле DOS в 64-битных операционных системах!

4
отвечен Gizmo 2023-05-06 06:28

У меня похожая проблема. 32-битный процесс отказывается умирать. Я найду ее задач в процессе 8152. Это следующие шаги:

C:\Users\Smurf>ошибка taskkill /pid 8152 / t: не удалось завершить процесс с PID 8152 (дочерний процесс PID 7788). Причина: Toegang geweigerd.

C:\Users\Smurf>ошибка taskkill / pid 7788 / T: процесс "7788" не найдено.

Toegand geweigerd- "доступ запрещен". Я дал себе все право так процесс в ProcExp. Интересно, как убить этот нежелательный процесс....

0
отвечен user718960 2023-05-06 08:45

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх