Сообщение от
gl00mie
Что и требовалось доказать. Хотя, признаться честно, в wmi я не силен, но у меня есть большое подозрение, что метод W32_Process::Terminate() выливается в вызов kernel32.TerminateProcess() - жуткий метод прибивания процесса без какой-либо возможности для последнего "подчистить" за собой, закрыть соединения и файлы, собрать мусор и т.п. А Access denied - штатный ответ виндов на попытку применения этой функции к процессам, запущенным как сервисы.
Предлагаю все-таки остановиться на dll-ке, разработанной AndyD.