AS>> Попробуйте устанавливать эти сервисы при помощи sc.exe, а не встроенными инсталляторами. Встроенные инсталляторы, вообще говоря, не совсем удачны.
SH>Что подразумевается под "встроенными инсталляторами"? Почему неудачны?
cmdline.
Почему "неудачны" — не отслеживают наличие у пользователя привилегии для запуска служб. Хотя,впрочем, они и пользователя задать не позволяют
В общем, слишком малофункциональны.
Обнаружил, в чем было у меня дело
Я ставил сервис на сетевой диск. А надо на локальный
В итоге поведение такое:
1) на сетевом диске сервис работает только под пользователем, под Local System не работает
2) на локальном — работает и под конкретным пользователем и под Local System
Здравствуйте, Odi$$ey, Вы писали:
OE>Здравствуйте, Odi$$ey, Вы писали:
OE>>попробовал serv_tiny (ShutdownCounter) на win2003 sp2 — установился, под Local System запускается
OE>SERV ("My cool Service") — тоже все OK
Здравствуйте, potap, Вы писали:
P>Обнаружил, в чем было у меня дело P>Я ставил сервис на сетевой диск. А надо на локальный P>В итоге поведение такое: P>1) на сетевом диске сервис работает только под пользователем, под Local System не работает P>2) на локальном — работает и под конкретным пользователем и под Local System
Фух! Выдохнул
Это нормально. Имхо, это в любой NT-ОС так будет. У него нет прав видеть собственный исполняемый файл — конечно это не может закончиться хорошо.
Делай что должно, и будь что будет
Re[9]: Службы: под Win 2003 не идет
От:
Аноним
Дата:
30.06.07 13:22
Оценка:
Здравствуйте, potap, Вы писали:
P>Я это починил вот так:
Так в чём причина? В SECURITY_ATTRIBUTES ? Или в префиксе Global\\ ?
ПРИМЕЧАНИЕ
Для реализации этой возможности привлечены неслабые средства. В Spy++ видно, что окна (MessageBox) принадлежат одному из потоков CSRSS.EXE. Это имеет забавный побочный эффект: сообщение может висеть на экране даже после завершения приложения. Соберите и запустите такую программку:
.
#define _WIN32_WINNT 0x0500
#include <windows.h>
int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
MessageBox(NULL, "try to kill me", "undead", MB_SERVICE_NOTIFICATION);
return 0;
}
.
А теперь попробуйте убить процесс из Task Manager’а. Если сделать несколько потоков, можно проверить ExitProcess, она в этой ситуации тоже не помогает.
На XP (pro-sp2) такой MessageBox принадлежит своему приложению, а не CSRSS.
Чтобы принадлежал CSRSS (с сопутствуюшими эффектами):
Здравствуйте, kero, Вы писали:
K>На XP (pro-sp2) такой MessageBox принадлежит своему приложению, а не CSRSS.
K>Чтобы принадлежал CSRSS (с сопутствуюшими эффектами): K>
Здравствуйте, SergH, Вы писали:
>Т.е. главный поток чем-то сильно отличается? Итересно! Спасибо, посмотрю, разберусь.
Ай, виноват, померещилось!
Заигрался подстановками MB_SERVICE_NOTIFICATION, MB_DEFAULT_DESKTOP_ONLY и MB_TOPMOST (=MB_SERVICE_NOTIFICATION_NT3X)...
При запуске-то из потока — по любому принадлежит CSRSS,
но при "прямом" запуске —
при MB_TOPMOST (=MB_SERVICE_NOTIFICATION_NT3X) принадлежит приложению,
а при MB_SERVICE_NOTIFICATION или MB_DEFAULT_DESKTOP_ONLY — таки CSRSS.
(Из потока — чтоб приложение закрылось само, оставив после себя MB).
Здравствуйте, kero, Вы писали:
K>Ай, виноват, померещилось!
Только я решил, что неприлично торможу, и пора уже посмотреть самому
K>Заигрался подстановками MB_SERVICE_NOTIFICATION, MB_DEFAULT_DESKTOP_ONLY и MB_TOPMOST (=MB_SERVICE_NOTIFICATION_NT3X)...
K>При запуске-то из потока — по любому принадлежит CSRSS, K>но при "прямом" запуске - K>при MB_TOPMOST (=MB_SERVICE_NOTIFICATION_NT3X) принадлежит приложению, K>а при MB_SERVICE_NOTIFICATION или MB_DEFAULT_DESKTOP_ONLY — таки CSRSS.
K>(Из потока — чтоб приложение закрылось само, оставив после себя MB).
Это по крайней мере объяснимо, хотя и противоречит тому, что написано в документации о MB_TOPMOST.
Предыдущая версия была совсем маловероятна, т.к. окно, принадлежащее приложению вообще-то не может магически оказаться на текущем активном десктопе, именно ради этого оно перенесено в csrss. Т.е. получалось, что для реализации MB_SERVICE_NOTIFICATION использованы менее мощные средства, чем необходимо, а значит я явно чего-то не понимаю, и чего-то большого.
В данном же случае получается что для реализации MB_TOPMOST использованы более сильные средства, чем необходимо. Это вполне нормально для Microsoft