|
попрос по службам windows
|
|||
---|---|---|---|
#18+
Добрый день. Есть 2 вопроса по службам windows. при запуске службы через exe файл, выскакивает окошко "сбой при запуске службы windows" "Невозможно запустить службу из командной строки или отладчика..." - все правильно. но вопрос в том как перехватить это окошко и вывести свое. или просто как определить как запущено приложение как служба или как процесс? и второй вопрос. например служба Radmin запускает дополнительный процесс "radmin component" которая показывает иконку в трее и предоставляет консоль для управления службой. так же Radmin следит чтобы этот процесс всегда работал, и если его убить руками то он тут же снова запустится. как организовать подобное поведение? (хотя бы в какую сторону копать) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2013, 08:50 |
|
попрос по службам windows
|
|||
---|---|---|---|
#18+
noob123как определить как запущено приложение как служба или как процесс? Environment.UserInteractive ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2013, 09:35 |
|
попрос по службам windows
|
|||
---|---|---|---|
#18+
Алексей Кnoob123как определить как запущено приложение как служба или как процесс? Environment.UserInteractive не всегда верно. если у службы поставить флаг "разрешить взаимодействие с рабочим столом" то Environment.UserInteractive так же будет true ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2013, 10:35 |
|
попрос по службам windows
|
|||
---|---|---|---|
#18+
noob123, а что вы хотите-то я не понимаю. Вариантов можно много придумать, например ключ запуска "service,console..." ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2013, 11:36 |
|
попрос по службам windows
|
|||
---|---|---|---|
#18+
noob123, по поводу второй части вопроса рассмотрите вариант, внутри сервиса хочтится wcf сервис, который позволяет управлять вашим сервисом, снимать с него специфические показатели и т. п.. клиент wcf отдельно пишите, общаетесь через pipe, или tcp /ip ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2013, 11:52 |
|
попрос по службам windows
|
|||
---|---|---|---|
#18+
Lord British, опечатка забавная у тебя). Кстати а разве в Вин сервисе нет метода для передачи каких-то аргументов? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2013, 11:56 |
|
попрос по службам windows
|
|||
---|---|---|---|
#18+
noob123или просто как определить как запущено приложение как служба или как процесс? служба является процессом. Если Environment.UserInteractive - не устраивает - придётся доставать бубен и шаманить(точно нужна интерактивная служба?) noob123следит чтобы этот процесс всегда работал, и если его убить руками то он тут же снова запустится. как организовать подобное поведение? (хотя бы в какую сторону копать) Обрабатывать завершение дочернего процесса(событие Exited) и при необходимости перезапускать его ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2013, 11:56 |
|
попрос по службам windows
|
|||
---|---|---|---|
#18+
netivanКстати а разве в Вин сервисе нет метода для передачи каких-то аргументов? конечно есть ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2013, 11:57 |
|
попрос по службам windows
|
|||
---|---|---|---|
#18+
Изопропил, ну кроме Start,Stop и тд? Хотя WCF наверное лучший выход,но требует лишних телодвижений ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2013, 11:58 |
|
попрос по службам windows
|
|||
---|---|---|---|
#18+
noob123как перехватить это окошко и вывести свое. или просто как определить как запущено приложение как служба или как процесс? А это и не нужно делать, журнал событий для кого сделан? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2013, 11:58 |
|
попрос по службам windows
|
|||
---|---|---|---|
#18+
netivan, опечатка с трубы пишу, по поводу не убиваемого процесса, гугли на сайте wasm.ru, там были исходники, но если памяти не изменяет, то оно один хрен может быть снято под админом с помощью debug api ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2013, 12:02 |
|
попрос по службам windows
|
|||
---|---|---|---|
#18+
это было автору ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2013, 12:04 |
|
попрос по службам windows
|
|||
---|---|---|---|
#18+
отвечаю сразу всем. как сделать взаимодействие между службой и приложением я знаю. вопрос был в том как запустить дочерний процесс и отслеживать его работу. типа завершился и тд. МСУnoob123как перехватить это окошко и вывести свое. или просто как определить как запущено приложение как служба или как процесс? А это и не нужно делать, журнал событий для кого сделан? тебе не нужно, а кому то может и нужно. например мне. если запустить тот же радмин (rserver3.exe) выскочит MessageBox с текстом: "Программа будет работать только как системная служба". все четко и красиво. а если запустить приложение мое, то вылезает большое окно "Невозможно запустить службу из командной строки или отладчика..." которое пугает пользователя, и мне нафиг не нужно. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2013, 12:08 |
|
попрос по службам windows
|
|||
---|---|---|---|
#18+
noob123если запустить тот же радмин (rserver3.exe) выскочит MessageBox с текстом: "Программа будет работать только как системная служба". все четко и красиво. а если запустить приложение мое, то вылезает большое окно "Невозможно запустить службу из командной строки или отладчика..." которое пугает пользователя, и мне нафиг не нужно.Можно написать программу, которая работает и как служба, и как приложение, в зависимости от того, как она запущена. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2013, 12:13 |
|
попрос по службам windows
|
|||
---|---|---|---|
#18+
noob123выскочит MessageBox с текстом: "Программа будет работать только как системная служба". ну так же сказали: if (Environment.UserInteractive) {Console.WriteLine("Нужна служба"); Console.ReadLine(); return; } ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2013, 12:13 |
|
попрос по службам windows
|
|||
---|---|---|---|
#18+
Алексей Кnoob123если запустить тот же радмин (rserver3.exe) выскочит MessageBox с текстом: "Программа будет работать только как системная служба". все четко и красиво. а если запустить приложение мое, то вылезает большое окно "Невозможно запустить службу из командной строки или отладчика..." которое пугает пользователя, и мне нафиг не нужно.Можно написать программу, которая работает и как служба, и как приложение, в зависимости от того, как она запущена. можно, только в том и вопрос, как определить "как она запущена". Arm79noob123выскочит MessageBox с текстом: "Программа будет работать только как системная служба". ну так же сказали: if (Environment.UserInteractive) {Console.WriteLine("Нужна служба"); Console.ReadLine(); return; } читай выше, вариант не катит. так как Environment.UserInteractive не зависит от того как запущено приложение. он может быть true даже в случае если приложение запущено как служба. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2013, 12:17 |
|
попрос по службам windows
|
|||
---|---|---|---|
#18+
netivanИзопропил, ну кроме Start,Stop и тд? Хотя WCF наверное лучший выход,но требует лишних телодвижений SCM поддерживает посылку пользовательских сообщений (коды 128-256) Если этого недостаточно - любая форма RPC подойдёт ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2013, 12:18 |
|
попрос по службам windows
|
|||
---|---|---|---|
#18+
noob123, тогда делайте специальный аргумент, я же вам говорил. Где запускаете службу передавайте аргумент ""service". И вперед - Код: c# 1. 2. 3. 4. 5. 6. 7. 8.
... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2013, 12:20 |
|
попрос по службам windows
|
|||
---|---|---|---|
#18+
noob123Environment.UserInteractive не зависит от того как запущено приложение. он может быть true даже в случае если приложение запущено как служба А у вас сервис интерактивный? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2013, 12:20 |
|
попрос по службам windows
|
|||
---|---|---|---|
#18+
noob123отвечаю сразу всем. как сделать взаимодействие между службой и приложением я знаю. вопрос был в том как запустить дочерний процесс и отслеживать его работу. типа завершился и тд. МСУпропущено... А это и не нужно делать, журнал событий для кого сделан? тебе не нужно, а кому то может и нужно. например мне. если запустить тот же радмин (rserver3.exe) выскочит MessageBox с текстом: "Программа будет работать только как системная служба". все четко и красиво. а если запустить приложение мое, то вылезает большое окно "Невозможно запустить службу из командной строки или отладчика..." которое пугает пользователя, и мне нафиг не нужно. мониторить создание/завершение процесса можно через wmi. может и подойдет тебе. можно и других методов нагенерить ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2013, 12:22 |
|
попрос по службам windows
|
|||
---|---|---|---|
#18+
Интерактивная служба - это хороший, добрый косяк. Должны быть веские основания для использования. Необходимость выплюнуть мессаджбокс - таким основанием не является. Если топикстартер настаивает - нужно определить родительский процесс и если это services.exe - приложение запущено как сервис ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2013, 12:22 |
|
попрос по службам windows
|
|||
---|---|---|---|
#18+
netivannoob123, тогда делайте специальный аргумент, я же вам говорил. Где запускаете службу передавайте аргумент ""service". И вперед - Код: c# 1. 2. 3. 4. 5. 6. 7. 8.
хорошо. это решение костыль. потом кто-нить запустить службу myservice.exe /service , вылезет "я служба" и потом выпадет окно что нихрена не служба. Arm79noob123Environment.UserInteractive не зависит от того как запущено приложение. он может быть true даже в случае если приложение запущено как служба А у вас сервис интерактивный? предположим что да. тоесть даже если сделать не интерактивным то всеравно, это решение получается не универсальным. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2013, 12:24 |
|
попрос по службам windows
|
|||
---|---|---|---|
#18+
ИзопропилИнтерактивная служба - это хороший, добрый косяк. Должны быть веские основания для использования. Необходимость выплюнуть мессаджбокс - таким основанием не является. Если топикстартер настаивает - нужно определить родительский процесс и если это services.exe - приложение запущено как сервис попробую. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2013, 12:25 |
|
|
start [/forum/topic.php?fid=20&msg=38135952&tid=1405227]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
52ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
59ms |
get tp. blocked users: |
2ms |
others: | 351ms |
total: | 510ms |
0 / 0 |