Ваша «чистота» в лучшем случае кажется искусственной конструкцией. Если вы говорите пользователю создать ярлык в папке автозагрузки, вы уже оставляете след (и, честно говоря, разница между myprog.exe и myprog.exe -m небольшая) . В этом случае есть несколько более простых подходов, чем автоматическая попытка определить, откуда вы бежите.
Я просто предоставил бы пункт меню в вашей программе («Установить»), который затем установил бы программное обеспечение на фиксированный диск (в отличие от флэш-накопителя), включая необходимую запись «Программы» (Пуск, Все программы, CintaNotes).
В рамках этого процесса (или даже после установки) вы можете позволить им указать «Запуск с Windows», а затем создать ярлык папки запуска для пользователя с параметром командной строки, чтобы ваша программа могу сказать, работает ли он в этом направлении. Нет смысла разрешать «Начать с Windows», если программа не доступна (то есть на фиксированном диске, а не на флэш-накопителе).
Вашему пользователю не нужно вообще беспокоиться о создании ярлыков, не говоря уже о ярлыках с параметрами. И это дает вашей программе контроль над тем, как она запускается - два режима: «установлен» (и запуск в свернутом виде) или «запуск без предварительной установки» (и запуск в обычном режиме).
Что-то вроде поиска каталога исполняемого файла не будет работать просто потому, что элемент начальной папки, запускающий вашу программу, скорее всего, будет ярлыком для него, поэтому у вас не будет этого пути.
Я считаю, что это классический случай неправильного вопроса. Отвечая на ваш конкретный вопрос, я говорю: нет, нет способа сказать, что вы были запущены из записи папки запуска без каких-либо параметров командной строки. Но, раньше я ошибался, просто спросите мою жену :-). Кто-то другой может хорошо знать способ.
Добавление этой правки, поскольку в комментариях недостаточно места:
Ты спрашиваешь:
Что вы думаете об отключении опции «Запускать при запуске Windows», когда программа обнаруживает, что она запускается с флешки? Думаю, есть способ это обнаружить.
Это хорошая идея, поскольку нет смысла разрешать автоматический запуск, пока он не будет установлен (поскольку флеш-накопитель может отсутствовать). Одна возможность:
1 / Запуск из флэш-памяти, вы начинаете с «myprog.exe», поскольку вы просто дважды щелкнули исполняемый файл и запускаете в обычном окне. Это дает возможность «Установить на фиксированный диск», но не «Начать с Windows». В процессе установки вы можете разрешить им настроить установленную копию на «Запуск с Windows», но не для текущей работающей копии.
2 / Ваша установленная программа может быть настроена для запуска как «myprog.exe -i», поскольку вы создаете элемент в меню «Пуск» / «Все программы». Это отключит «Установить на фиксированный диск», но позволит вам переключить «Начать с Windows». Вы можете выбрать, хотите ли вы, чтобы явный запуск (пользователем) начинался нормально или с минимальным запуском (см. (3)).
3 / Ярлык в StartUp может быть «myprog.exe -s» (опять же, вы управляете этим, потому что вы его создали). Это идентично (2), но запускается минимизированным (если (2) все равно запущен минимизированным, нет различия между (2) и (3) и нет причин для разных параметров командной строки).
Таким образом, каждый вариант может вести себя по-разному, как вы сочтете нужным.
person
paxdiablo
schedule
19.01.2009