Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Microsoft Windows 7 (http://forum.oszone.net/forumdisplay.php?f=95)
-   -   [решено] schtasks, как создать задание с расписанием "только по запросу" (http://forum.oszone.net/showthread.php?t=220723)

IlyaNSK 17-11-2011 09:52 1796940

schtasks, как создать задание с расписанием "только по запросу"
 
Имеется windows 7 Домашняя базовая SP1 32bit

Как известно, один из методов запуска программ с высокими привилегиями без запроса UAC - это создание запланированной задачи и создание ярлыка для ее немедленного запуска.
При создании запланированной задачи из интерфейса легко создается задание с расписанием "только по запросу", однако мне никак не удается создать задание с таким расписанием с командной строки. утилита schtasks в разделе /create имеет опции расписания /sc MINUTE, HOURLY, DAILY, WEEKLY, MONTHLY, ONCE, ONSTART, ONLOGON, ONIDLE, ONEVENT - которые требуют указания /st (времени запуска).. можно, конечно, создать задание ONCE с датой запуска лет через 20, но это уже называется "схимичить".
Вопрос: есть ли недокументированный ключ к schtasks, позволяющий создавать задание с расписанием: "только по запросу"
P.S. Я программирую инсталлятор и пользователи жалуются, что приходится всякий раз нажимать согласие на запрос UAC для запуска установленной программы. Отключать UAC совсем - не вариант. Применение XML-слепка для создания задачи неприменимо, т.к. имя компьютера/пользователя, которые несет XML установщику неизвестны..

Morpheus 17-11-2011 10:18 1796953

IlyaNSK, можно попробовать обойти через экспорт настроенного задания в XML, а затем естественно импорт.
Сейчас этого не проверял, но со всеми хитрыми заданиями делается именно так.

HLT 17-11-2011 10:34 1796963

можно забыть про task scheduler и посмотреть в сторону автоматического повышения привилегий для определенных приложений :

http://www.verboon.info/wp-content/u...1-00h14_05.png

для конкретного пользователя пишем параметр RUNASADMIN в раздел
HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers

для всех пользователей - соответственно,
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers



пользователь запускает инсталятор, он себя копирует, например, в c:\windows\temp, и запускается оттуда.
при первом запуске вылазит окошко UAC, пользователь соглашается, потом инсталятор прописывает себя в соответствующие ключи реестра, и все довольны.
Все последующие запуски на этом компьютере уже будут без криков UAC'а (если все следующие версии инсталятора будут называться одинаково и запускаться из одной и той же папки)

Vadikan 17-11-2011 11:48 1797020

IlyaNSK, постановка задачи очень странная.

1. Вне зависимости от того, какая дата указана при ONCE, задание остается в планировщике, и его можно запускать ярлыком.

2. Вы пишете установщик или имеете отношение к созданию приложения? Потому что придуманное вами решение - это не более, чем кривой костыль. Стоит пользователю удалить ярлык, как все вернется на круги своя.

3. Непонятно, зачем программе нужны права администратора. Если это новое приложение, то почему (UAC уже 5 лет)? Это какая-то программа для правки системных параметров?

4. Если программа старая, то нужно проверить, действительно ли ей нужны права администратора. Возможно, она будет нормально работать, если форсировать запуск с обычными правами, используя RunAsInvoker.

Наконец, решение, которое предложил HLT, в данном случае абсолютно не подходит. Оно похоже на RunAsInvoker с той лишь разницей, что форсируется запуск с полными правами. А это значит, что постоянно будет появляться запрос UAC, т.е. произойдет то, чего вы пытаетесь избежать.

IlyaNSK 17-11-2011 12:38 1797060

1. Я так и поступил

2. Я пишу установщик. Устанавливаемую программу я изменить не могу. Формально - удалил ярлык - переставляй программу. Предложите решение лучше, мне, как видно, квалификация не позволила.

3. Программа старая , обрабатывает потоковые данные из СОМ-порта и, будучи запускаемой в обычном режиме, вылетает по эксепшену.. (вообще она 16-битная еще, до пересборки на 32-64 бит дело не дойдет, уже пишется новая под новый прибор, но "старых" приборов еще изрядно)

4. Проверили - нужны.

Инсталлятор (NSIS) создает ярлык для запуска с правами админа и все работает ОК, но пользователю не нравится после клика по ярлыку запуска, кликать еще и "ОК" в UAC.
При запуске Акрониса Тру Имэйдж, например, такой запрос тоже выдается. Я просто реагирую на распоряжение начальства - пользователь запускает программу без лишних вопросов без отключения UAC.

to Morpheus
При создании через ХМL, разумеется, выдается:
ОШИБКА: Сопоставление между именами пользователей и идентификаторами безопасности не было произведено.
(13,8):LogonType:

Vadikan 17-11-2011 12:52 1797074

Цитата:

Цитата IlyaNSK
Я так и поступил »

Ну тогда все работает уже. Зачем вам еще что-то допиливать? Что даст "по запросу"?

Morpheus 17-11-2011 13:01 1797086

IlyaNSK, надо удалить строчку <UserId>***</UserId> в XML

IlyaNSK 17-11-2011 14:40 1797178

Morpheus, я удалял и получил что-то о целостности XML-файла. Вобщем-то, какое-никакое решение есть.
Спасибо всем за участие.
Vadikan, иногда просыпается перфекционизм, а вдруг через 20 лет это задание запустится и завесит машину :lol:

Morpheus 17-11-2011 14:44 1797184

IlyaNSK, да ладно. Там что-то типа "Успех. Бла-бла-бла..." Я сам этим способом пользуюсь.

Vadikan 17-11-2011 14:45 1797186

Цитата:

Цитата IlyaNSK
а вдруг через 20 лет это задание запустится и завесит машину »

Используйте предыдущую дату.

IlyaNSK 18-11-2011 09:47 1797769

Хм, действительно. Ограничился только предупреждением, но задание создал.
Спасибо еще раз.

IlyaNSK 05-12-2011 11:37 1809537

Уп-с!! А решено-то не до конца..

Может кто подскажет? В графическом режиме рабочую папку программы назначить можно, а вот как это с командной строки сделать?

Vadikan 05-12-2011 13:35 1809606

IlyaNSK, http://forum.oszone.net/showthread.php?t=211984


Время: 10:58.

Время: 10:58.
© OSzone.net 2001-