|
Запуск службы "с учетной записью пользователя".
|
|||
---|---|---|---|
#18+
Дмитрий77А проект .Net "Windows Service" хотя бы умееет запускаться как просто exe? Если не умеет, то это как минимум гимор при тестировании. Обычно всю сервисную логику выносят в отдельную сборку. И в солюшене, таким образом, 3 проекта: class library со всей логикой, консольное приложение для тестирования, и собственно приложение-сервис, в котором есть только сервис-инсталлер и запускалка сервиса. И никаких проблем с тестированием. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2017, 18:45 |
|
Запуск службы "с учетной записью пользователя".
|
|||
---|---|---|---|
#18+
ИзопропилДмитрий77>специальную учётку пользователя, пароль который мы знаем, так как «пользователь» метафизический, чисто для работы приложения В моем случае нужен реальный пользователь, почему 10 раз объяснил выше. пока залогоненый пользователь не запустил приложение - работает сервис от имени метафизического или иного пользователя, заданного при установке. при запуске приложения - сервис встаёт на паузу, при завершении - возобновляет работу Объясни что хотел сказать? Смотри, если сервис запущен от имени D\Метафизический пользователь, то факс создается также от имени D\Метафизический пользователь Когда реальный пользователь D\Dmitry, который имеет право хотеть посмотреть что там насоздавалось и напосылалось, как вообще дела идут, он запустит программу "Факсы и сканирование Windows". Факсов, посланных от имени D\Метафизический пользователь (равно как и от имени SYSTEM), он там не увидит. Если даже дать пользователю D\Dmitry все возможные права на все факсы (Сервис -> Параметры факса -> Безопасность), он чего-то увидит, но как он это увидит - это задница полная. 1) постоянно надо жать F5 чтобы видеть текущую картинку 2) просмотреть чужие факсы(картинки) нельзя, только перезапустить или удалить задание. и т.д. и т.п. (это на Win10 он еще увидит "чего-то", а на Win7 какой-нибудь он и этого "чего-то" кажется не увидит, про баги эти было куча срача на разных форумах). По этой и ряду других причин сервис надо запускать от D\Dmitry а не от D\Метафизический пользователь. Если сервис генерит факсы от имени D\Dmitry, то D\Dmitry комфортно сидя за компом видит весь процесс в Outbox\Sent в "Факсы и сканирование Windows" в реальном времени, как будто он сам их "ручками" посылает. Понятно, что D\Вася уже этих факсов не увидит, но D\Dmitry и D\Вася вполне могут договориться меж собой, кто за всем этим следит, и от имени кого из них запускать сервис. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2017, 18:59 |
|
Запуск службы "с учетной записью пользователя".
|
|||
---|---|---|---|
#18+
[quot Сон Веры Павловны]Дмитрий77Обычно всю сервисную логику выносят в отдельную сборку. И в солюшене, таким образом, 3 проекта: class library со всей логикой, консольное приложение для тестирования , и собственно приложение-сервис, в котором есть только сервис-инсталлер и запускалка сервиса. И никаких проблем с тестированием. Ну, по сути то это несильно отличается, от того что я использую. Есть "консольное приложение для тестирования" (или даже не консольное, я люблю использовать скрытую форму) Есть NSSM, который "сервис-инсталлер и запускалка сервиса" + к нему еще sc и/или API, чтоб чего-нибудь "подрихтовать", типа автозапуска или того же пользователя. Ну не буду я полюбому этим InstallUtil пользоваться с его индусским окном. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2017, 19:11 |
|
Запуск службы "с учетной записью пользователя".
|
|||
---|---|---|---|
#18+
Дмитрий77А проект .Net "Windows Service" хотя бы умееет запускаться как просто exe? Если не умеет, то это как минимум гимор при тестировании. Умеет. Дмитрий77Честно, не вижу смысла этой кухни. За ради в журнал Windows через EventLog мусорить? Серьёзно? Вся разница между приложением и сервисом это возможность писать в EventLog? Дмитрий77Ну, самый разумный в моем случае вариант. 1) При инсталляции ставить модуль как "приложение" (чтоб некрасиво не было из-за "окон ввода пароля") под текущего пользователя. Под "всех пользователей" нельзя, на multi-user системе (сервере) будет бардак. 2) В настройках иметь опцию "запускать как сервис", где предлагать ввод пользователя/пароля с подстановкой текущего пользователя (предполанается вызов "As Admin") с объяснением почему именно пользователя в диалоге ввода пароля (кратко) и хэлпе (поподробней). Диалог свой естественно, без вариантов. Использовать API, а не sc - иначе хрен отследишь что процедура установки прошла корректно. Отличный вариант. Мы так делали. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2017, 21:40 |
|
Запуск службы "с учетной записью пользователя".
|
|||
---|---|---|---|
#18+
Дмитрий77Использовать API, а не sc - иначе хрен отследишь что процедура установки прошла корректно. Почему хрен отследишь, запускаем команду, смотрим код возврата. Но можно и через API. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2017, 21:41 |
|
Запуск службы "с учетной записью пользователя".
|
|||
---|---|---|---|
#18+
Немного от слов к делу к коду Дмитрий77предлагать ввод пользователя... с подстановкой текущего пользователя Тек. пользователь в нужной форме записи вроде так корректно вычисляется Код: vbnet 1.
Для меня вычисляет D\Dmitry На всяк. случай поигрался-почитал доки, для SYSTEM надо тупо писать "LocalSystem" для Network Service надо тупо писать "NT AUTHORITY\NetworkService" (этих двоих оно в этом написании корректно съест вне зависимости от локализации) hVosttДмитрий77Использовать API, а не sc - иначе хрен отследишь что процедура установки прошла корректно.Почему хрен отследишь, запускаем команду, смотрим код возврата. Но можно и через API. Ну, м.б. и отследишь, но ИМХО это извращение, когда знаешь как сделать по нормальному. Короче накатал пока ф-цию начерно. Каюсь, воспользовался ServiceController sc.WaitForStatus(ServiceControllerStatus в чисто API-шном коде да еще и "между строк". (API заразы при старте-стопе сервиса сразу возвращают, WaitForStatus очевидно какой-нибудь Do..Loop делает, да и хрен бы с ним) Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71.
Допиливать видимо придется, когда имплементиовать буду, но принципиально оно чего надо делает. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2017, 06:32 |
|
|
start [/forum/topic.php?fid=20&gotonew=1&tid=1399719]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
66ms |
get topic data: |
9ms |
get first new msg: |
7ms |
get forum data: |
3ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 177ms |
0 / 0 |