2013-12-17 3 views
0

Я написал приложение Windows. Я хочу, чтобы другие приложения могли программно запускать мое приложение. Как я могу достичь этого и каковы соображения, связанные с этим?В Windows, как я могу дать другим приложениям возможность программно запускать мое приложение?

Редактировать: Чтобы уточнить, я не спрашиваю, как другие приложения могут запускать мое приложение; Я спрашиваю, что могу сделать, чтобы другие приложения могли запускать мое приложение.

+0

Простой ответ заключается в том, что они должны использовать только функцию системы() с путем к вашему приложению. Но вы, вероятно, ищете что-то еще, поэтому вам нужно быть более точным: хотите ли вы, чтобы ваше приложение взаимодействовало с другими (и каким образом), вы хотите, чтобы они запускали ваши в определенное время суток ...? – Luis

+0

Да, это просто, но кажется, что ты только что ударил банку. Как другое приложение узнает путь к моему приложению? – Cyro

ответ

2

Чтобы иметь возможность запускать приложение без необходимости знать явный путь к тому месту, где он установлен, вам необходимо зарегистрировать его в Windows, добавив его в дерево реестра приложений.

Обычно это делается во время установки приложения.

См MSDN - Application Registration

+0

Брюс, правильно ли я понимаю, что дерево реестра App Paths находится под HKEY_LOCAL_MACHINE \ Software и поэтому подвержено [перенаправлению реестра] (http://msdn.microsoft.com/en-us/library/windows/desktop/aa384232 % 28v = vs.85% 29.aspx) - подразумевается, что регистрация моего приложения будет нечитаемой приложениями, которые имеют различную архитектуру от 32 до 64 бит, чем мое приложение? – Cyro

+0

Что касается моего предыдущего комментария: я сделал эксперимент и обнаружил, что как 32, так и 64-разрядные приложения могут считывать значения реестра App Paths, написанные 32 и 64-битными приложениями. Это не соответствует моему пониманию перенаправления реестра, но он устанавливает, что решение Брюса завершено, и мне не нужно опасаться, что мое приложение будет неоткрыто какой-то частью приложений из-за несоответствия архитектуры. – Cyro

0

В Windows отсутствует защита, препятствующая запуску приложения другим приложением (в режиме пользователя, по крайней мере, для запуска в режиме администратора требуется, чтобы другая программа выполнялась в режиме администратора, а также для запроса пользователю запускать это в режиме администратора). Другое приложение просто должно знать путь к местоположению вашего .exe-файла, и он может его выполнить. Если другая программа не знает точный путь, но она знает, где искать и что вы вызываете в вашей программе .exe, она может также искать ее в файловой системе, прежде чем ее выполнять.

Что касается конкретно того, как они будут запускать файл .exe вашей программы, это будет зависеть от языка, на котором их программа написана, как вызывается системный API для запуска .exe.

+0

Моя задача - вот что делает firefox по-разному и может быть открыт с помощью «start firefox»? –

+1

@Leon Эти приложения зарегистрированы в разделе реестра HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ App Paths. – IInspectable

+0

Jeff, перефразируя ваш ответ, вы говорите, что я не могу принять никаких дополнительных мер на моем конце, и мое приложение будет запускаться любым приложением, которое знает путь к моему исполняемому файлу или желает и сможет найти этот путь, выполнив поиск файловая система. Хорошо, но это кажется ограничительным. Я хотел бы, чтобы мое приложение запускалось приложениями, которые не знают путь к моему исполняемому файлу и не хотят или не могут найти этот путь путем поиска в файловой системе. – Cyro

Смежные вопросы