tewary_manish Ответов: 3

Консольное приложение Windows exe не вызывает основной метод при установке и система выходит из системы и снова входит в систему


Windows Console Application exe не вызывает основной метод при установке, а система выходит из системы и снова входит в систему. Я создал консольное приложение Windows, а затем его EXE с помощью Visual Studio Installer ==> Setup Project. Мое требование состоит в том, чтобы это приложение запускалось автоматически при перезагрузке системы или выходе из системы / входе в систему. Кроме того, я добавил ярлык для папки автозагрузки Windows в проект установки. После установки exe он запускается автоматически. Я могу проверить это в диспетчере задач. Но когда система перезапускается или выходит из системы и входит в систему, exe не работает. Хотя в диспетчере задач он отображается как запущенный процесс, но основной метод не вызывается. Может ли кто-нибудь помочь мне в этом? Что я пробовал: зарегистрировать запись в LocalMachine> ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ> Microsoft> Windows> CurrentVersion> Запустить регистрацию записи в CurrentUser> ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ> Microsoft> Windows> CurrentVersion> Выполнить

Что я уже пробовал:

Выше

Arun Vasu

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

tewary_manish

служба windows не будет захватывать активные детали окна, мое требование состояло в том, чтобы захватить детали переднего плана окна. Служба windows не даст вам этого. Я тоже попробовал и погуглил. Вот почему я решил пойти на консольное приложение, и при развертывании я делаю его как оконное приложение из properties= & gt;application

Richard Deeming

Удаление содержимого вашего вопроса после того, как решения были опубликованы, является чрезвычайно грубо!

3 Ответов

Рейтинг:
2

Dave Kreskowiak

Существует проблема с вашим кодом, потому что нет такой вещи, как "основной метод не вызывается". Если ваше консольное приложение находится в Диспетчере задач, то был вызван ваш основной метод. Точка, конец дискуссии.

Но, поскольку мы не можем видеть ваш код, мы не можем сказать вам, что вы сделали неправильно.


Рейтинг:
1

RickZeeland

Может быть, поставить ярлык в Папка запуска Windows поможет, увидишь: Как заставить программу работать при запуске на любом компьютере[^]
Но вы, наверное,уже пробовали.
Проблема в Windows 10 заключается в том, что ярлык не будет работать, если 'Администратор- привилегии установлены.

Некоторые хорошие ответы можно найти здесь: EXE в папке Startup не работает - форумы Windows 10[^]

Чтобы запустить программу, требующую доступа администратора при запуске в Windows 10, просто создайте ярлык (в любом месте, я использовал саму папку запуска) с отметкой" Запуск от имени администратора", затем создайте короткий пакетный файл в папке запуска и используйте команду "Пуск" для запуска ярлыка (опустите расширение .lnk и путь, иначе запуск не будет работать, поэтому сначала используйте " cd " для перехода в каталог ярлыков). Пример:

@echo off
cd "C:\Users\...\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup"
start ThrottleStop


tewary_manish

Я уже пробовал это, мой ярлык виден под "shell:startup". Приложение также доступно в диспетчере задач после повторного входа в систему. Но кое-как функционал не работает. Я имею в виду, что "основной метод не вызывается после перезагрузки или входа в систему".

Я ставлю журнал в самой первой строке точки входа, то есть основного метода, но это тоже не работает.

tewary_manish

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

Рейтинг:
1

RickZeeland

Способ сделать это программно-использовать планировщик, вот пример, который показывает ручной способ: Повышенный ярлык программы без приглашения UAC-Create - Справочные Форумы Windows 7[^]
Существует несколько способов программирования планировщика задач с помощью ИНТЕРФЕЙС ПРИКЛАДНОГО ПРОГРАММИРОВАНИЯ, или через ДОС команды.
Для простоты я бы рекомендовал использовать команды DOS.
Удачи :)


tewary_manish

Позвольте мне рассказать вам, что я сделал до сих пор:

Вы сказали мне, что это может быть проблема набора, не установленного как "Запуск от имени администратора". Поэтому просто для тестирования я удалил его и снова установил с помощью Run As Admin. Приложение запускается сразу после установки автоматически. Но когда я вошел в систему и вошел обратно, снова возникла та же проблема.

Я вижу это в диспетчере задач как активный процесс, но он не выполняет свою функциональность. Я уже говорил вам ранее, что даже первая строка "основного метода" не выполняется.

ПОЭТОМУ Я ДУМАЮ, ЧТО ЕСТЬ КАКАЯ-ТО ДРУГАЯ ПРОБЛЕМА. ДАЖЕ ЕСЛИ Я ЗАСТАВЛЮ СВОЙ УСТАНОВЩИК РАБОТАТЬ ОТ ИМЕНИ АДМИНИСТРАТОРА, ОН НЕ БУДЕТ РАБОТАТЬ ПОСЛЕ ВОЗВРАТА ВХОДА В СИСТЕМУ, ЧТО ЯВЛЯЕТСЯ ПЕРВОНАЧАЛЬНОЙ ПРОБЛЕМОЙ.

Мой вопрос заключается в следующем: почему приложение не работает, даже если оно отображается как активная задача в диспетчере задач?

RickZeeland

У меня нет хрустального шара, поэтому я не знаю, что именно вы сделали для создания консольного приложения, может быть, вы сделали что-то особенное, например, изменили файл .manifest ?
Вы можете показать код ? Работает ли стандартное консольное приложение на вашем компьютере так, как ожидалось ?

RickZeeland

Мне кажется, теперь я понимаю вашу проблему, когда вы ответили Аруну ВАСУ, что сказали:
Я делаю это как оконное приложение из properties= & gt;application
Почему ты сразу этого не сказал ?
Просто повторите попытку, создав обычное приложение Windows, и посмотрите, сработает ли это.

tewary_manish

Спасибо всем за предложения/помощь.
Я вернул его обычное консольное приложение, и проблема осталась прежней. Если бы это было так, то он не будет работать в первый раз также автоматически, то есть сразу после установки.

Я думаю, что у меня есть проблема, я использую SQL lite DB для этого приложения. Я поставил различные точки журнала и заметил, что объект соединения не открывается (проблема с "con.open()"). Хотя он работает под управлением find после установки. ПРОБЛЕМА ВОЗНИКАЕТ ТОЛЬКО ПОСЛЕ ПЕРЕЗАГРУЗКИ ИЛИ ПОВТОРНОГО ВХОДА В СИСТЕМУ.

tewary_manish

Возникла проблема, это было из-за отсутствия файла манифеста в проекте, так как приложение требовало административных привилегий.

Спасибо всем вам за помощь и предложения