Когда пользователь запускает 32-разрядное приложение .Net в 64-разрядной среде, в диспетчере задач оно отображается с другим именем.
Например, если мое приложение называется Shipnet.Shell.exe
, в диспетчере задач оно отображается SH7910~1.exe*32
. Из-за этого изменения имени выполнение команды TASKKILL завершается неудачно.
Как я могу получить правильное имя для использования с TASKKILL?
Немного предыстории:
У нас есть устаревший продукт, разработанный в Centura Team Developer 4.2 (Gupta Sql Windows). Из нашего старого продукта мы можем использовать 32-битные .Net приложения. Мой продукт очень большой и имеет сотни приложений, разработанных в Centura и .Net. Пользователь может запустить несколько приложений из главного меню (Centura и .Net). На экране главного меню есть меню «Выход». Когда пользователь нажимает на это меню, наш продукт закрывает все приложения Centura и .Net. Centura позаботится о собственном приложении в процессе закрытия. Мы используем команду TASKKILL, чтобы закрыть все .Net приложения, запущенные из нашего продукта. Это нормально работает с 32-битной средой Windows. Когда мы внедряем то же самое в 64-битной среде Windows, наш продукт не может закрыть приложения .Net. Причина в том, что команда TASKKILL не смогла получить правильное имя приложения.