Member 12330615 Ответов: 1

Как создать службу windows из консольной программы window?


У меня есть оконная консольная программа с именем a.exe с помощью VC++, который работает 24 часа в сутки.
Я попытался изменить эту программу на служебную программу windows.
Но когда я написал код об этом, как видно из моего руководства, компилятор не мог знать тип переменной SERVICE_TABLE_ENTRY, или SERVICE_STATUS, и т. д.

1. Какова моя главная мысль об ошибке, даже если это написано в инструкции?
2. В другой стороны, чтобы удовлетворить этой цели, я буду вести диалог с кнопкой "Пуск", так если щелкнуть по нему, и в "вызове shellexecute () функция" открыть пакетный файл, который является в том числе "СК /создать.летучая мышь". Но это вызвало сообщение об ошибке "доступ запрещен"....

Таким образом, обе ошибки являются очень сложными проблемами для меня, что делает службу windows для новичка непростой задачей.

Пожалуйста, позвольте мне показать простые образцы об этом.

Заранее спасибо.

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

Еще 3 дня потрачено впустую на эту проблему.

1 Ответов

Рейтинг:
8

Jochen Arndt

Примеры см. Пример базовой службы Windows на языке C++ (CppWindowsService) на языке C++ для Visual Studio 2008[^] и Простая служба Windows на языке C++[^].

SERVICE_TABLE_ENTRY и SERVICE_STATUS определяются в Winsvc.ч который входит в состав Окна.ч Поэтому они должны быть известны при компиляции.

sc.exe это приложение командной строки service control manager. Он должен выполняться с достаточными правами для создания, запуска и остановки служб. Создание должно быть сделано только один раз и обычно выполняется в процессе установки (или вручную для тестирования / непубличных служб с помощью командной оболочки, запущенной от имени администратора). При использовании обычного приложения, которое вызывает ShellExecute во исполнение sc, это приложение также должно быть выполнено с достаточными привилегиями.

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