Вот назрел такой вопрос.
Я делаю софтину, которая будет представлять собой подобие socks прокси сервера. Т.к. приложение сетевое, может потребоваться его автозапуск. Автозапуск хочу сделать как можно проще, в виде:
Start type:
( ) Manual
(o) Auto
Но возникает такая проблема. Очень удобно было бы установить программу в виде службы (сервиса, windows service). Это обеспечило бы автоматический запуск при logon'е. Но возникает небольшая проблема. Устанавливать в виде сервиса разрешено только админам. А что делать, если пользователь НЕ админ? Отключать автозапуск было бы как-то некрасиво. Ведь можно запихнуть в автозагрузку через HKEY_CURRENT_USER\...\Run. Может как-то уведомить об этом пользователя?
Или вообще отказаться от автозапуска? НО! ИМХО он тут очень нужен. Софтина все-таки сетевая, может так случится, что она должна всегда работать, как веб-сервер.
Может сделать так:
Start type:
( ) Manual
(o) Auto
( ) Windows Service
И еще одна проблемка. Если не делать службу windows, то для админов нужно указать как запускать софтину, только для себя или для всех. Например так:
Start type:
( ) Manual
(o) Auto: ( ) Only for you (o) For all
( ) Windows Service
Как-то громоздко получается.
С точки зрения программера выходит, что мне нужно разрабатывать два модуля, один службу windows для админов. Второй — модуль для юзеров обычных. Так?
И если юзер обычный, стОит ли ему писать что-то вроде этого: "You must gain admin privelegies to be able to install mysupersoft as a windows service"
Вот забыл добавить, также указывается порт.
Для админов порт может быть любой, а для обычных юзеров не менее 1024. Что писать в этом случае?
Выводить MessageBox или лучше сразу написать (static control), если юзер НЕ-админ, что ему нужно обязательно указать порт выше 1024.
А не проще-ли определять, под каким юзером запущена винда и соответственно юзать разные типы автозапуска? Т.е. если юзер — админ, то предлагать как сервис устанавливать и ты пы.
Здравствуйте, Roman Pushkin MCAD, Вы писали:
RPM>Но возникает такая проблема. Очень удобно было бы установить программу в виде службы (сервиса, windows service). Это обеспечило бы автоматический запуск при logon'е.
Ты уверен, что правильно понимаешь суть сервисв? Никакого автоматического запуска при логоне тут не предусмотрено. Сервис стартует либо вручную, либо при старте винды. Не дожидаясь никакого логона. Если это — желаемое поведение, то никакой автозапуск его не воспроизведут. Если же нежелательное, то не имеет смысл рассматривать опцию запуска как сервиса.
... << RSDN@Home 1.1.4 beta 5 rev. 395>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Здравствуйте, Sinclair, Вы писали:
S>Ты уверен, что правильно понимаешь суть сервисв? Никакого автоматического запуска при логоне тут не предусмотрено. Сервис стартует либо вручную, либо при старте винды. Не дожидаясь никакого логона. Если это — желаемое поведение, то никакой автозапуск его не воспроизведут. Если же нежелательное, то не имеет смысл рассматривать опцию запуска как сервиса.
Я написал logon по-английски именно для того, чтобы не подбирать походящий русскоязычный термин.
При старте SCM осуществляет процедуру входа в систему для учетной записи, под которой будет запущена служба. В MSDN подразумевается именно такой процесс. Он происходит без участия и ведома пользователя. Для русского человека этот термин ассоциируется с действиями пользователя, хотя это не так.
Но это все мелочи, буду рад услышать что-нибудь по существу вопроса. А тему логона можно обсудить в какой
Здравствуйте, Flamer, Вы писали:
F>А не проще-ли определять, под каким юзером запущена винда и соответственно юзать разные типы автозапуска? Т.е. если юзер — админ, то предлагать как сервис устанавливать и ты пы.
Можно, а тогда нужно ли уведомлять как-нибудь об этом пользователя? ИМХО он должен понимать, что только под админом он сможет полноценно (если можно так выразиться воспользоваться автозапуском. И автозапуск для НЕ-админа будет отличаться по сути своей от автозапуска для админа.
Что ему сказать тогда? И где?
Ты определись вначале с use-case'ами. Твоя программа предназначена для тупого юзера или для продвинутого? Все-таки наверное для продвинутого, потому что обычный вряд ли знает что такое прокси, не говоря уже о SOCKS. А продвинутый разберется, как надо ставить; более того, он скорее всего админ. Ему нужно четко обозначить выбор: запускать при старте системы (как сервис), запускать при входе этого пользователя (из реестра), запускать при входе любого пользователя, запускать вручную.
Да, и как она поведет себя при входе нескольких пользователей сразу под XP? Это тоже надо объяснить при установке.
Здравствуйте, wildwind, Вы писали:
W>А продвинутый разберется, как надо ставить; более того, он скорее всего админ.
Никогда. Так. Нельзя. Думать. Пожалуйста!
Я достаточно продвинутый пользователь, и работаю я без админских прав. И полезу в админскую консоль я только в самом крайнем случае. И меня ужасно раздражают программы, которые не понимают, что пользователю что-то может быть запрещено делать.
Start automatically:
( ) Never
(o) At user logon
( ) Only current user *
(o) All users *
( ) Install Windows Service *
You must have Administration privilages to use Windows Service or All users mode.
Если нет административных привилегий, то пункты помеченные звёздочками являются Disabled (а не прячутся), при этом появляется подпись снизу. Несмотря на disable, при выборе At user logon, должна выбираться и Only current user, показывая окончательный результат. При выборе Never или Service — выбор должен сниматься с подпунктов At logon, но запоминаться внутри, чтобы если я его снова выберу (и я админ) — выбирался последний выбраный.
Здравствуйте, orangy, Вы писали:
W>>А продвинутый разберется, как надо ставить; более того, он скорее всего админ. O>Никогда. Так. Нельзя. Думать. Пожалуйста!
Ты не понял. Продвинутый пользователь не работает под админом (он же продвинутый), но имеет админский вход, которым и воспользуется при установке. Работает под юзером, а ставит под админом.
Здравствуйте, wildwind, Вы писали:
W>>>А продвинутый разберется, как надо ставить; более того, он скорее всего админ. O>>Никогда. Так. Нельзя. Думать. Пожалуйста! W>Ты не понял. Продвинутый пользователь не работает под админом (он же продвинутый), но имеет админский вход, которым и воспользуется при установке. Работает под юзером, а ставит под админом.
Ну тогда инсталляшка должна явно сказать: "Дядя, зайди-ка под админом, тогда поставлюсь.". Только вот я еще 10 раз подумаю, не нажать ли мне лучше кнопочку Del?
Здравствуйте, orangy, Вы писали:
O>Ну тогда инсталляшка должна явно сказать: "Дядя, зайди-ка под админом, тогда поставлюсь.".
А как ты хотел, если сервис надо ставить (возможно). Да и вообще, если программе требуется инсталлятор, значит она не просто exe, а прописывается где-то в системе. На что нужны админские права.
Между прочим, в правильно настроенной системе под юзером инсталлятор, скачанный откуда-то из сети, даже не запустится.
Здравствуйте, wildwind, Вы писали:
O>>Ну тогда инсталляшка должна явно сказать: "Дядя, зайди-ка под админом, тогда поставлюсь.". W>А как ты хотел, если сервис надо ставить (возможно). Да и вообще, если программе требуется инсталлятор, значит она не просто exe, а прописывается где-то в системе. На что нужны админские права. W>Между прочим, в правильно настроенной системе под юзером инсталлятор, скачанный откуда-то из сети, даже не запустится.
Дайте мне выбор — я сам разберусь
RPM>Можно, а тогда нужно ли уведомлять как-нибудь об этом пользователя? ИМХО он должен понимать, что только под админом он сможет полноценно (если можно так выразиться воспользоваться автозапуском. И автозапуск для НЕ-админа будет отличаться по сути своей от автозапуска для админа. RPM>Что ему сказать тогда? И где?
Просто делай disable на radio-button, которая ответсвенна за Запуск как сервис. В скобочках в тексте кнопки подпиши (administrator only). Ничего прятать не нужно, пусть всегда будут видны три кнопки.