Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 8, средняя оценка - 4.75
ObloMishka
0 / 0 / 0
Регистрация: 04.06.2007
Сообщений: 17
#1

Запуск/остановка сервайсов под NT/2000 - C++

01.02.2008, 20:34. Просмотров 1056. Ответов 8
Метки нет (Все метки)

Привет, может кто-нибудь подскажет как можно программно остановить/запустить любые сервайсы под NT/2000. Что для этого надо знать о сервайсе? Возможно, уже есть какая-то утилита для этого? Тогда можно было бы из своей программы запускать ее с определенными параметрами... В общем, если у кого-нибудь есть идеи как это можно провернуть, то прошу поделиться, буду очень благодарен
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.02.2008, 20:34
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Запуск/остановка сервайсов под NT/2000 (C++):

Запуск и остановка дочернего процесса - C++
Здравствуйте, Есть у меня программа, где нечто выполняется в бесконечном цикле. Есть программа, которая первую запускает. Причем...

Запуск\остановка цикла по нажатию клавиши - C++
Всем привет! Вопрос как реализовать запуск и остановку цикла в консольном приложении по нажатию клавиши f12?

Запуск JVM из под плюсов, запущенных под Wine! - C++
Всем привет! Я тут написал приложение на C++, которое прекрасно работает под Windows следующим образом: помимо прочего стартует JVM,...

Перевести линуховый демон под 2000/XP - C++
Нужен Help, очень срочно.. Требуется перевести линуховый демон под 2000/XP. Какой под 2000/XP аналог демонов? т.е. прога должна висеть...

Запуск C++ Builder 4.0 из-под пользователя с ограниченными правами - C++
Такой вопрос: Нужно установить C++ Builder 4.0 в компьютерном классе (такой старый, потому что другого лицензионного нет и возможности для...

Остановка цикла do while - C++
Доброго времени суток. Столкнулся с такой проблемой в решении задачи: Дана числовая последовательность целых чисел и одно дробное, нужно...

8
quit
04.02.2008, 09:21 #2
В MSDN поищи.
Я дернул то с чего начать поиск :

CreateProcess
This function is used to run a new program. It creates a new process and its primary thread. The new process executes the specified executable file.

A remote application interface (RAPI) version of this function exists, and it is named CeCreateProcess.

CreateProcess(
LPCWSTR lpszImageName,
LPCWSTR lpszCmdLine,
LPSECURITY_ATTRIBUTES lpsaProcess,
LPSECURITY_ATTRIBUTES lpsaThread,
BOOL fInheritHandles,
DWORD fdwCreate,
LPVOID lpvEnvironment,
LPWSTR lpszCurDir,
LPSTARTUPINFOW lpsiStartInfo,
LPPROCESS_INFORMATION lppiProcInfo);
--------------------------------------------------------------

ExitProcess
The ExitProcess function ends a process and all of its threads.

VOID ExitProcess(
UINT uExitCode);
Parameters
uExitCode
[in] Specifies the exit code for the process and for all threads that are terminated as a result of this call. Use the GetExitCodeProcess function to retrieve the process's exit value. Use the GetExitCodeThread function to retrieve a thread's exit value.
Return Values
None.

Remarks
ExitProcess is the preferred method of ending a process. This function provides a clean process shutdown. This includes calling the entry-point function of all attached dynamic-link libraries (DLLs) with a value indicating that the process is detaching from the DLL. If a process terminates by calling TerminateProcess, the DLLs that the process is attached to are not notified of the process termination.

After all attached DLLs have executed any process termination value, this function terminates the current process.

Terminating a process causes the following:

All of the object handles opened by the process are closed.
All of the threads in the process terminate their execution.
The state of the process object becomes signaled, satisfying any threads that had been waiting for the process to terminate.
The states of all threads of the process become signaled, satisfying any threads that had been waiting for the threads to terminate.
The termination status of the process changes from STILL_ACTIVE to the exit value of the process.
DeaD-MaZZaY
0 / 0 / 0
Регистрация: 19.01.2009
Сообщений: 3
19.01.2009, 11:50 #3
Эээээ, а причем тут C++
Для запуска сервайса нужна знать его имя
'Утилита' есть, под NT4 точно, под 2000 не знаю,
называется она
Код
net.exe
Если тебе нужно запускать например службу в определенное время,
то добавляешь в расписание задание (команда
Код
'AT'
или ручками в планировщике)
Код
net start '<имя службы>'
, где
[code]<имя службы>[code] -- сервайс который тебе нада запустить
( без значков
Код
'<'
и
Код
'>'


PS Если кто-нидь знает аналог под Win2k, то напишите плиз.
0
AmbX
0 / 0 / 0
Регистрация: 21.12.2007
Сообщений: 122
19.01.2009, 11:57 #4
А чего програмного
получилось в вашем примере
с net.exe
0
ObloMishka
0 / 0 / 0
Регистрация: 04.06.2007
Сообщений: 17
19.01.2009, 14:14  [ТС] #5
Вау! Какой вал ответов, не прошло и года ))
Я уже давным-давно написал свою утилитку для запуска/остановки сервайсов, затем узнал про net.exe (есть и в вин2000), доработал свою утилитку для удаленного запуска/остановки сервайсов и, наконец, нашел утилитку SC.exe (если не ошибаюсь родом из NT options pack), которая предлагает кучу возможностей по созданию, настройке и управлению сервайсами.
0
DeaD-MaZZaY
0 / 0 / 0
Регистрация: 19.01.2009
Сообщений: 3
21.01.2009, 14:57 #6
2 AmbX
Если хочется программно, пожалуйста, запусти эту утилиту из своей програмки

2 ObloMishka
Ну, извини.
Я этот форум недавно нашел.
Если, можно, то про утилитку SC.exe немножко поподробнее, плиз.
0
AmbX
0 / 0 / 0
Регистрация: 21.12.2007
Сообщений: 122
21.01.2009, 15:16 #7
Так програмно запускать утилиту
это и юзер может. Вопрос как програмно сделать то же
без утилиты
0
ObloMishka
0 / 0 / 0
Регистрация: 04.06.2007
Сообщений: 17
21.01.2009, 15:28  [ТС] #8
2 AmbX:
Мне было важно сделать это автоматически, т.е. чтобы я на природе пиво пил, а сервайсы запускалисьстопались когда надо А делалось бы это моим кодом, или вызываемой утилитой - по барабану... Ну да не суть важно...

2 DeaD-MaZZaY:
SC.exe /?
DESCRIPTION:
SC is a command line program used for communicating with the
NT Service Controller and services.
USAGE:
sc <server> [command] [service name] <option1> <option2>...

The option <server> has the form '\ServerName'
Further help on commands can be obtained by typing: 'sc [command]'
Commands:
query-----------Queries the status for a service, or
enumerates the status for types of services.
start-----------Starts a service.
pause-----------Sends a PAUSE control request to a service.
interrogate-----Sends an INTERROGATE control request to a service.
continue--------Sends a CONTINUE control request to a service.
stop------------Sends a STOP request to a service.
config----------Changes the configuration of a service (persistant).
qc--------------Queries the configuration information for a service.
delete----------Deletes a service (from the registry).
create----------Creates a service. (adds it to the registry).
control---------Sends a control to a service.
GetDisplayName--Gets the DisplayName for a service.
GetKeyName------Gets the ServiceKeyName for a service.
EnumDepend------Enumerates Service Dependencies.

The following commands don't require a service name:
sc <server> <command> <option>
boot------------(ok | bad) Indicates whether the last boot should
be saved as the last-known-good boot configuration
Lock------------Locks the Service Database
QueryLock-------Queries the LockStatus for the SCManager Database
EXAMPLE:
sc start MyService
0
DeaD-MaZZaY
0 / 0 / 0
Регистрация: 19.01.2009
Сообщений: 3
26.01.2009, 02:21 #9
2 AmbX Действительно, внимательней надо читать, что спрашивают
А если уж так хочется програмно, ведь ты не какой-то там продвинутый юзер, а настоящий программер и админ, то покопайся в коде утилиты, и посмотри как она работает, и сделай тоже самое Шутка.
Лана не обижайся, ничего личного.

2 ObloMishka
Ok, понял надо посмотреть 'SC.exe /?'
Спасиба.
А, блин, чуть не забыл. Сорри, но я щас под 98 сижу. и рядом ничего NT-го нету. Если эта утилита не стандартная, то скажи плиз, где ее взять. А если стандартная, тогда ладна, я ее наверно на работе найду
0
26.01.2009, 02:21
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.01.2009, 02:21
Привет! Вот еще темы с ответами:

временная остановка)))) - C++
меня интересует такой вопрос: в Си есть какая-нибудь функция, которая останавливает выполнение программы на некоторое время??? (например,...

Остановка действий - C++
Можно ли как нибудь остановить выполнения программы на некоторое время?

Остановка вектора - C++
Здравствуйте! Помогите пожалуйста реализовать в ниже приведенном коде, как остановить функцию readlong как только появиться точка или...

Непонятная остановка программы - C++
Не могу понять в чем причина торможения программы. Запускаю ее, она виснет и не завершается. Все, что удалось выяснить - проблема с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.