Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > UAC


Автор: Racer 13.8.2010, 20:20
Добрый вечер. Помогите пожалуйста в моем вопросе. У меня есть программа. ее необходимо иногда обновлять. для этого есть  2ой ехе который качает  и заменяет файлы. НО на висте и 7 папка Програм Файлс защищена и вносить туда просто  так изменения нельяз. Если запущу от имена админа- то  все хорошо. вопрос: как заставить  программц запускаться от  имени админа. лазию по инету 2 день, не могу решить  проблему. пробовал манифест - не выходит. Очень надо, помогите пожалуйста.

Автор: CodeMonkey 13.8.2010, 22:22
Ваш установщик, который ставит программу, будет работать от админа. Так вот он должен добавить вашу обновлялку в планировщик заданий для периодического запуска из под админа.

Автор: Racer 13.8.2010, 23:03
Как это  сделать, я собирал все InnoSetup ом?

Автор: Racer 13.8.2010, 23:47
И еще. Планировщик заданий может быть  выключен. Надо  что  другое, конкретно вызвать  это  окно UAC на повышение прав.
У Jedi есть  такое. там спец аналог шелекезкют. но я не смог сделать, т.к. не вышло поставить все о  него на delphi 2010.

Помогите пожалуйста, горю

Автор: CodeMonkey 14.8.2010, 05:25
Цитата(Racer @  14.8.2010,  00:03 Найти цитируемый пост)
Как это  сделать, я собирал все InnoSetup ом?


Я не знаю. InnoSetup позволяет запустить программу во время установки или там есть скриптовый язык какой-то? 

Проще всего создать задачу http://technet.microsoft.com/en-us/library/cc772785(WS.10).aspx, но не уверен, есть ли там все возможности. Метод посложнее - http://msdn.microsoft.com/en-us/library/aa383614(VS.85).aspx (под Delphi в JCL есть оболочка в JclTasks).

Цитата(Racer @  14.8.2010,  00:47 Найти цитируемый пост)
Планировщик заданий может быть  выключен


Это в Висте-то и выше? Ну тогда с таким же успехом могут отключить и вашу индивидуальную обновлялку.

Цитата(Racer @  14.8.2010,  00:47 Найти цитируемый пост)
Надо  что  другое, конкретно вызвать  это  окно UAC на повышение прав.


Т.е. вас устроит всплывающее окошко каждый раз, когда ваша программа решит обновиться? Я-то вам пытаюсь предложить способ без окошка.

Цитата(Racer @  14.8.2010,  00:47 Найти цитируемый пост)
У Jedi есть  такое. там спец аналог шелекезкют. но я не смог сделать, т.к. не вышло поставить все о  него на delphi 2010.


Ещё раз и по-русски.

Автор: Racer 14.8.2010, 09:13
Я уже разобрался. а вообще то  каждый раз окошка не будет. для этого у меня специальный алгоритм. сама программа проверяет апедйт. если есть, то  выдает мессагу на перегруз проги. она выключается и запускает апдейтер. он с правами админа. все заменяет и опять  запускает прогу. 

Автор: Akella 14.8.2010, 16:08
Цитата(Racer @  13.8.2010,  23:03 Найти цитируемый пост)
Как это  сделать, я собирал все InnoSetup ом? 

А разве при запуске дистрибутива, сделанного тобой, винда не предлагает запустить его с правами админа?
Кстати, в настройках ISTool есть переключатель, типа "Требуются права администратора".

Автор: drkot 24.8.2010, 00:24
Цитата(Racer @  14.8.2010,  09:13 Найти цитируемый пост)
меня специальный алгоритм

ох уж эти алгоритмы...

Цитата(CodeMonkey @  13.8.2010,  22:22 Найти цитируемый пост)
добавить вашу обновлялку в планировщик

планировщик не лучшее решение, если не худшее. 
- требует отдельный апдейтер
- крутится даже если программа не используется (что не всегда хорошо)
- для создания задания типа run as понадобится вводить пароль приего создании, что тоже не зер гуд


Цитата(Racer @  13.8.2010,  20:20 Найти цитируемый пост)
Програм Файлс защищена и вносить туда просто  так изменения нельяз

зя... но нужно хитряй пируэт проделать

А в целом тема очень интересна, тк решения пока на форуме НЕТ, да и в инете тоже не особо...

Автор: CodeMonkey 24.8.2010, 00:40
Цитата(drkot @  24.8.2010,  01:24 Найти цитируемый пост)
планировщик не лучшее решение, если не худшее. 


Планировщик - отличное решение:

Цитата(drkot @  24.8.2010,  01:24 Найти цитируемый пост)
- требует отдельный апдейтер


Кто мешает запустить MyApp.exe /checkupdate?

Цитата(drkot @  24.8.2010,  01:24 Найти цитируемый пост)
- крутится даже если программа не используется (что не всегда хорошо)


Вы хотели сказать: "запускается раз в месяц и не грузит систему в остальное время"?

Цитата(drkot @  24.8.2010,  01:24 Найти цитируемый пост)
- для создания задания типа run as понадобится вводить пароль приего создании, что тоже не зер гуд


Какой пароль? Установщик программы создаёт задание в планировщике, чтобы он выполнял обновление от имени Local System. Хотите сказать, что у установщика может не быть админских прав? Ну так они тогда не нужны будут и для обновления - тогда и вопрос не стоит.

Автор: drkot 24.8.2010, 02:03
CodeMonkey, это уже религия... и спорить смысла нет.
но в жизни не все так радужно... и узать планировщик удобно краене редко (это имхо)
для нормальной работы системы обновления надо проверять раз в день, чтобы гарантированно обновиться сразу, тк программа может быть завязана на сервер либо другие звенья, а тянуть за собой совместимость не есть хорошее решение (ms именно за это и жалуют, хотя и пользуют).

например я не встречал программ которые так делают...
+ меня раздражает когда какаято га...сь прописалась кудато там и вдруг (спустя месяц а то и больше после того как я ее запускал) кудато там лезет...
вот если она мне понадобится когда нибудь, тогда и проверим обновление если надо... а может меня и старая версия устраивает... или это способ напомнить мне что я вовремя не снес надоедливую программу?


Другое дело это обновление в корпоративных сетях. Где нужно делать все массово и тихо, чтоб админ по этажам не бегал и юзверей не дергал...
юзверь запустил арм, он тут же подтялул обновление и порядок (тоесть по необходимости), а не тогда когда планировщик решит... может к тому времени на сервере приложений уже новый набор комманд будет... тогда юзеру обломинся, а админ совершит пробежку в лучшем случае на соседний этаж в худшем на другой конец города. А когда вернется с пониманием причин происходящего не постесняется изложить все мысли, которые пришли в его светлую голову в пробках, уважаемым програмерам; при этом не навязчиво стараясь узнать кто же все таки придумал такуюсистему обновления, чтобы выразить глубокое уважение и отрубить этому резвому бойцу доступ к корпоративной порнухе...
много букв... много слов, но все та же религия...
нет универсальных решений. под каждую задачу свое решение.

Добавлено через 3 минуты и 57 секунд
к стати, пароль все же нужен...
причем его нужно именно указать, и не достаточно находится под админской учеткой...
или Вы занаете другой способ?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)