А проблема именно в питоне ? Просто в ShellExecute явного высвобождения дескриптора не происходит, что если добавить явный вызов CloseHandlе в конце метода ?
Или, например, вместо ShellExecute, использовать функцию CreateProcess ?
https://stackoverflow.com/questions/...execute-to-run