![]() |
Завершение процесса в Диспетчере задач с символом ℗ в конце имени
Есть программы типа Portable, то есть распаковываются в папку TEMP \RarSFX и оттуда работают,
но иногда после закрытия программы они продолжают висеть в Диспетчере задач, а иногда если одну и туже программу запустить несколько раз, например 2 раза и закрыть оба раза, то в Диспетчере задач остаются висеть уже 2 процесса с одинаковым именем и не завершаются пока не закроешь их вручную. Всё бы это ничего, но когда пытаюсь удалить файл с которым работала эта программа его невозможно удалить пока не завершишь процесс с именем этой программы. Перезагрузка Explorer.exe не помогает. Все программы имеют в конце имени символ ℗, это так я обозначаю портативные программы. Что нужно. Возможно ли создать скрипт, который бы завершал все процессы в Диспетчере задач имеющие в конце имени этот символ ℗. |
Очень не советую связываться со спецсимволами в подобных случаях, добавили бы лучше слово portable в конце.
Попробуйте вот это (Powershell от админа): Код:
stop-process *℗ -force |
Нет мне нужен именно скрипт, я хочу закрепить ссылку на него в контекстном меню и запускать при необходимости.
|
Ну сохраните его как скрипт, кто мешает? Расширение .ps1.
|
А не поможете сделать на подобии такого скрипта:
Скрытый текст
Dim WSHShell
Set WSHShell = WScript.CreateObject("WScript.Shell") ' Если скрипт запущен с каким-то параметром, то... If WScript.Arguments.Count>0 Then ' Проверяем значение в реестре и в зависимости от него либо отображаем расширения, либо наоборот скрываем. If WSHShell.RegRead("HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\HideFileExt") = 0 then ' Скрываем расширения WSHShell.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\HideFileExt", "1", "REG_DWORD" ' Добавляем пункт в контекстное меню ' В поле command прописываем путь до текущего скрипта с параметром (не важно каким, главное, чтобы он был), чтобы.. ' ..скрипт понял, что ему нужно не удалить ветку реестра, а изменить WSHShell.RegWrite "HKEY_CURRENT_USER\Software\Classes\Directory\Background\shell\HideFileExt\", "Показать расширения", "REG_SZ" WSHShell.RegWrite "HKEY_CURRENT_USER\Software\Classes\Directory\Background\shell\HideFileExt\command\", "WScript.exe """&WScript.ScriptFullName&""" -argument", "REG_SZ" ' Обновляем окно эксплорера, чтобы увидеть результат WSHShell.SendKeys "{F5}" Else ' Показываем расширения WSHShell.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\HideFileExt", "0", "REG_DWORD" ' Добавляем пункт в контекстное меню WSHShell.RegWrite "HKEY_CURRENT_USER\Software\Classes\Directory\Background\shell\HideFileExt\", "Скрыть расширения", "REG_SZ" WSHShell.RegWrite "HKEY_CURRENT_USER\Software\Classes\Directory\Background\shell\HideFileExt\command\", "WScript.exe """&WScript.ScriptFullName&""" -argument", "REG_SZ" ' Обновляем окно эксплорера, чтобы увидеть результат WSHShell.SendKeys "{F5}" End If Else ' Если запись в реестре есть, то удаляем наш раздел If WSHShell.Run("cmd.exe /C REG QUERY ""HKEY_CURRENT_USER\Software\Classes\Directory\Background\shell\HideFileExt""", 0, True)=0 Then WSHShell.Run "cmd /C REG DELETE ""HKEY_CURRENT_USER\Software\Classes\Directory\Background\shell\HideFileExt"" /f", 0 Else ' Иначе запускаем этот скрипт с параметром (какой параметр - значения не имеет, главное его наличие) WSHShell.Run """"&WScript.ScriptFullName&""" -argument" ' И ещё добавим иконочку для красоты WSHShell.RegWrite "HKEY_CURRENT_USER\Software\Classes\Directory\Background\shell\HideFileExt\Icon", "%SystemRoot%\System32\shell32.dll,69", "REG_SZ" End If End if Set WSHShell = Nothing WScript.Quit(0) |
Что то не срабатывает:
Так тоже: stop-process *℗.exe -force Так как процесс называется Axialis Icon 6.9.1.0 ℗.exe Скрытый текст
stop-process : He удается привязать параметр "InputObject'.
He удается преобразовать значение "*0" типа "System.string" в тип "System.Diagnostics.Process". строка:1 знак:14 + stop-process *0 -force + + Categorylnto : InvalidArgument: ( : ) [.Stop-Process], ParameterBindingException + FullyQualifiedErrorId : CannotConvertArgumentNoMessage,Microsoft.PowerShell.Commands.StopProcessCommand |
Хорошо, а если так?
Код:
stop-process *$([char]0x2117) -force |
Можно так в командной строке:
Код:
wmic Path win32_process Where "name like '%%℗%%'" CALL Terminate |
Цитата:
|
Казбек, Сработало хорошо.
А можно это выполнить с помощью батника? И если можно, как дописать в него ещё и перезапуск dllhost.exe x0r, Слишком длинные получаются имена и половина имени не видно. Я люблю когда имя отображается полностью на рабочем столе и в папках. |
Цитата:
Цитата:
Код:
wmic Path win32_process Where "name like '%%+%%'" CALL Terminate |
Время: 23:01. |
Время: 23:01.
© OSzone.net 2001-