Планировщик задач, только уничтожающий cmd.exe, но не его дочерние процессы

У меня есть несколько учетных записей Site5 только для резервного копирования. Они являются действительно дешевыми и предлагают ssh доступ, что означает, что можно использовать вещи как rsync по ssh также и стандартным протоколам.

Я нашел, что их сервис достаточно хорош. Я полагался бы на них 100% для моего бизнеса, но как легкое удаленное резервное копирование, они работали хорошо. Конечно, любой размещенный поставщик работал бы точно также, и они в настоящее время предлагают много пространства для дешевого.

7
задан 29 July 2009 в 06:41
5 ответов

Если Вы думаете, что это происходит из-за появления сообщения отладчика, имейте Вас, пытался перенести код в a try{}catch{} блок и вход ошибки?

Иначе возможно, то, что Вы могли сделать, имеют процессы, пишут вывод WindowsPrincipal wp = new WindowsPrincipal(WindowsIdentity.GetCurrent())

Я подозреваю, что дети так или иначе наращивают свой priveledge уровень Администратору и затем не могут быть уничтожены с родителем.

Для тестирования этого, не изменяя код Вы могли записать другую запланированную задачу, которая пытается уничтожить другие процессы с помощью taskkill. Эта запланированная задача должна быть выполнена как Администратор. Если это работает, то похоже, что это - проблема безопасности.

0
ответ дан 2 December 2019 в 23:49
  • 1
    те программы не были записаны нами, и нам не разрешают изменить их, если нет серьезные проблемы, которые призывают к фиксации их. мой вопрос здесь не о разработке приложений.NET. Это о Планировщике задач и управлении деревом процесса. –  icelava 29 July 2009 в 06:59
  • 2
    Если я выполняю запланированную задачу как свою собственную учетную запись пользователя, которая является администратором, они могут быть уничтожены. –  icelava 29 July 2009 в 07:00
  • 3
    Право, потому что Ваше приложение затем запускается в правильном контексте защиты. Но я подозреваю, что другие приложения наращивают свой контекст защиты, лишающий возможности учетные записи неадминистратора затем уничтожить их. –  Adam Brand 29 July 2009 в 07:19
  • 4
    Я обновил свой ответ с альтернативным подходом. –  Adam Brand 29 July 2009 в 07:22
  • 5
    Но когда я протестировал это использование другой учетной записи администратора, поверхностей поведения. –  icelava 29 July 2009 в 08:26

Как насчет того, чтобы использовать pskill утилиту, которая является частью комплекта SysInternals. Эта программа может уничтожить процессы по имени. Я добавил бы запланированную задачу, которая будет работать спустя несколько минут после того, как Вы будете ожидать, что процессы будут закончены, который выполнит pskill для завершения их.

PSKill может также работать в соответствии с удостоверениями пользователя, которые Вы предоставляете на командной строке.

0
ответ дан 2 December 2019 в 23:49
  • 1
    Я не спрашиваю об уничтожении процессов. Я спрашиваю о том, что заставляет дочерний процесс становиться осиротевшим или не после того, как родительский cmd.exe завершается. –  icelava 30 July 2009 в 20:58

Я не знаю, что это решит Вашу проблему, но если это связано с раскрывающимися полями (и это могло бы быть - приложение находится в неработающем состоянии, и приостановлено, в то время как несуществующий пользователь решает, что делать с этим).

Смотрите на http://blogs.msdn.com/shawnfa/archive/2004/07/15/184490.aspx и посмотрите, не можете ли Вы избавиться от тех полей...

0
ответ дан 2 December 2019 в 23:49
  • 1
    В то время как это - интересное примечание, я спрашиваю о том, что заставляет дочерний процесс становиться осиротевшим или не после того, как родительский cmd.exe завершается. –  icelava 30 July 2009 в 21:00

Процессы независимы в Windows - Уничтожение родительского процесса автоматически не завершит дочерний процесс.

1
ответ дан 2 December 2019 в 23:49
  • 1
    Если это так, почему был бы, Планировщик задач, заканчивающий cmd.exe также, заканчивает другие процессы .exe в моих тестовых сценариях? –  icelava 22 March 2010 в 05:33

Try using "Taskkill /T" on the command line. (/T = “…Terminates the specified process and any child processes which were started by it…”)

If you have multiple processes running (we often have 5 or more "powershell.exe" running) then add the "Command Line" column to the "Details" tab in Task Manager. That should make it clear which Process ID is the one you want to kill off

2
ответ дан 2 December 2019 в 23:49

Теги

Похожие вопросы