diff options
author | Steven Murawski <steven.murawski@gmail.com> | 2016-06-06 16:29:30 -0500 |
---|---|---|
committer | Steven Murawski <steven.murawski@gmail.com> | 2016-06-06 16:47:31 -0500 |
commit | ab2ab5c61d5f3ffa94a48a2aca1555bfeda68efb (patch) | |
tree | 442089d9fdad4310f3a25197616604219d03b028 /lib/mixlib/shellout/windows.rb | |
parent | 4336bf146d624dadd6aeed3f03a11c08e7577c09 (diff) | |
download | mixlib-shellout-smurawski/agressive_termination.tar.gz |
add logging message if attempting to kill critical processsmurawski/agressive_termination
Diffstat (limited to 'lib/mixlib/shellout/windows.rb')
-rw-r--r-- | lib/mixlib/shellout/windows.rb | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/lib/mixlib/shellout/windows.rb b/lib/mixlib/shellout/windows.rb index 6957ea9..5b13dad 100644 --- a/lib/mixlib/shellout/windows.rb +++ b/lib/mixlib/shellout/windows.rb @@ -333,13 +333,21 @@ module Mixlib ] end + def self.unsafe_process?(name, logger) + return false unless system_required_processes.include? name + logger.debug( + "A request to kill a critical system process - #{name} - was received and skipped." + ) + true + end + # recursively kills all child processes of given pid # calls itself querying for children child procs until # none remain. Important that a single WmiLite instance # is passed in since each creates its own WMI rpc process def self.kill_process_tree(pid, wmi, logger) wmi.query("select * from Win32_Process where ParentProcessID=#{pid}").each do |instance| - next if system_required_processes.include? instance.wmi_ole_object.name + next if unsafe_process?(instance.wmi_ole_object.name, logger) child_pid = instance.wmi_ole_object.processid kill_process_tree(child_pid, wmi, logger) kill_process(instance, logger) |