Сильно не пинайте, если что. Искал долго. Ничего подходящего не нашёл. А главное, в упор не представляю, как это сделать самому.
Итак. Берём, значит, в реестре строчку автозапуска, к примеру, DownloadMaster'а.
Выглядит она вот так:
Regedit писал(а):C:\Program Files\Download Master\dmaster.exe -autorun
Делаем "Пуск->Выполнить", копируем её туда, жмём "ОК". Работает. Круто.
Пробуем сделать то же самое программно. К примеру, Shell. Работает. Круто.
Берём приложение, для которого важна "Рабочая папка". Понимаем, что Shell не катит, ибо некуда её вписать, а всякие там ChDir перед и после, это как-то стрёмно, и неправильно. Shell обламывается. Не круто.
Вспоминаем о том, что есть ShellExecute, в которой можно задать рабочую папку. Вспоминаем, что это круто. Радуемся.
Смотрим параметры к ShellExecute. lpFile, lpParameters, lpDirectory. Пробуем сунуть всю строку в lpFile(а вдруг прокатит?). И понимаем, что не прокатило...
Итак, вопрос. Каким образом можно из предложенной командной строки выделить собственно lpFile и lpParameters?
Со строками вида:
"C:\Program Files\Nokia\Nokia PC Suite 7\PCSuite.exe" -onlytray
"C:\Program Files\Radeon Omega Drivers\v4.8.442\ATI Tray Tools\atitray.exe"
C:\WINDOWS\system32\ctfmon.exe
Проблем не возникает. Если первый символ - кавычка - то имя программы в кавычках, а остальное - параметры. Если в строке нет ни кавычек, ни пробелов - параметров нет.
И туда же второй вопрос. Как определить что тут:
C:\Program Files\Punto Switcher\ps.exe
Нету параметров.
Пока в голову приходит только отлавливать ".exe ".
Но ведь может быть и строка вроде "c:\program files\main.exe folder\autostop.exe /kill old.exe"
У кого-нибудь есть идеи?