Ситуация такая: запущен мой сервис, который каждые 10 секунд смотрит с помощью EnumProcesses, OpenProcess, GetModuleBaseName запущено ли интересующее меня приложение, и если нет, то запускает его. Программы не защищеные крипторами работают нормально, но игры (пожатые starforce, armadillo, и подобной хернёй) либо вылетают с ошибкой, либо глючат. ОС winXPsp2. Пробовал просто перебирать имена процессов, без всяких действий - глюки остались. Влияет ли на работу процесса его открытие (exe-шник которого защищен каким-нить протектором) с помощью OpenProcccess с флагами PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, и пользование данных о нем с помощью GetModuleBaseName? Может есть способ узнать запущен ли процесс с таким то именем, не пользуя OpenProccess?
2 Zufyxe: Спасибо, но это не достаточно ленивый способ, слишком много кода Чего-то я вчера погорячился с этим постингом, попробовал получать информацию о процессе с заданным именем через интерфейсы WMI - усё работает без глюков, только вот игры подлагивать стали , лаги происходят на выполнении запроса WQL: "SELECT * FROM Win32_Process Where Name = \"my_app.exe\""
Лаги побеждены, это был аудит безопасности, писались все результаты обращения к системным объектам несколько десятков на один запрос. Отключение аудита безопасности помогло.