Как я могу запустить приложение при запуске в системе Windows, которая была изменена, чтобы не запускать проводник - PullRequest
3 голосов
/ 14 июля 2009

РЕЗЮМЕ

Как я могу заставить мое приложение с графическим интерфейсом работать при запуске Windows на модифицированной коробке Windows, которая не запускает explorer.exe.

  • Размещение ссылки в Программы -> Папка автозагрузки не выполняется.
  • Мое приложение графическое, поэтому я не могу просто изменить приложение для запуска в качестве службы.

Фон

У меня есть приложение, которое должно работать на выделенном ПК, которое используется для генерации контента для Digital Signage. Это тип программного обеспечения, которое генерирует объявления и различное содержание слайд-шоу, которое вы видите на плазменных / ЖК-экранах в крупных организациях.

У меня был опыт работы с несколькими различными поставщиками такого программного обеспечения для управления контентом, и все они в основном создают приложение для Windows, а затем вычеркивают вещи из окон, чтобы предотвратить появление каких-либо всплывающих окон и т. Д. Я имею в виду прямо сейчас, окна были изменены так, что explorer.exe не запускается.

Функция запуска нашей программы при запуске использует ссылку в папке запуска. Я обнаружил, что, поскольку explorer.exe не работает, не работает и мое приложение.

Когда компьютер запускается, он автоматически загружается в режим запуска для приложения digital signage, которое начинает отображать программируемый контент. Вы можете нажать CTRL - ALT - DELETE и убить их программу, а затем запустить explorer.exe из taskmanager. Примерно через секунду или около того ... я вижу запуск моего приложения.

Итак, мой вопрос - Как я могу заставить мое приложение загружаться в окно Windows, которое не запускается explorer.exe. Кто-нибудь знает, если, скажем, использование ключа реестра в папке «Выполнить» будет работать даже в отсутствие проводника? Есть ли другой способ заставить программу работать при запуске?


Редактировать: принятый ответ. Замечания по реализации

Я реализовал подход в принятом ответе. Вот ссылка, которую я нашел полезной при ее реализации. Я никогда не пробовал подход с ключом реестра. Если кто-то подтвердит, что он будет выполняться без загрузки explorer.exe, оставьте комментарий.

Ответы [ 4 ]

6 голосов
/ 14 июля 2009

Преобразуйте ваше приложение в сервис и установите его в качестве автозапуска. Кроме того, в Интернете есть инструменты для запуска произвольного exe-файла в качестве службы. Писать самому довольно просто.

Если вашему приложению необходимо взаимодействовать с рабочим столом и создавать пользовательский интерфейс, вам понадобится служба для запуска исполняемого файла на соответствующем рабочем столе. Для этого вы можете использовать WTSEnumerateSessions для поиска интерактивного пользовательского сеанса, WTSQueryUserToken для получения его токена, затем CreateProcessAsUser для запуска приложения на правильном рабочем столе от имени этого пользователя.

2 голосов
/ 14 июля 2009

<HKLM|HKCU>\Software\Microsoft\Windows\CurrentVersion\Run - обычное место для размещения вещей, но если этого недостаточно, HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon имеет строку с именем «Userinit» и поддерживает несколько значений, разделенных запятыми.

Если вы хотите попасть в недокументированную страну, в реестре есть миллион мест, где все запускается, запустите автозапуск из Sysinternals во время мониторинга с помощью RegMon / ProcessMonitor

0 голосов
/ 14 июля 2009

Можете ли вы добавить запись в реестр

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run

ключ

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

0 голосов
/ 14 июля 2009

Вы можете попытаться изменить

[HKEY_CLASSES_ROOT\Folder\shell] 

установить значение по умолчанию для пути / имени вашего исполняемого файла

ЭТО ОПАСНО .. если вы все испортите, у вас могут возникнуть огромные проблемы с работой системы .. лучше всего попробовать / поиграть на виртуальной машине

...