AutoHotkey не может запускать приложения ClickOnce при запуске при запуске с помощью планировщика задач

1309
deadlydog

Я люблю AutoHotkey (AHK) и использую его для запуска всех своих приложений с помощью AHK Command Picker . Чтобы обойти ограничения, введенные UAC в Windows 8, мне нужно, чтобы мои сценарии AHK запускались от имени администратора. Теперь, независимо от того, запускаю ли сценарий от имени администратора или нет, если я вручную запускаю свой сценарий AHK, он может запускать мои приложения ClickOnce. Это пример того, как я запускаю приложение ClickOnce из AHK:

Выполнить, C: \ SomeFolder \ MyClickOnceApp.appref-ms

Проблема, с которой я сталкиваюсь, возникает при использовании планировщика заданий для автоматического запуска сценария AHK при входе в Windows . Когда я делаю это, если я пытаюсь запустить приложение ClickOnce со своим сценарием, то ничего не происходит. Я могу закрыть скрипт и вручную запустить запланированное задание, чтобы перезапустить его, но он все равно не будет работать. Если затем закрыть скрипт и запустить его вручную (дважды щелкнув по моему файлу .ahk), то все будет нормально, и я смогу запустить свои приложения ClickOnce. Если я затем снова закрою скрипт и вручную запущу запланированную задачу, чтобы перезапустить его снова, то все будет работать нормально, и я смогу запустить свои приложения ClickOnce.

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

Я не уверен, в чем разница между тем, что я вручную дважды щелкаю по файлу .ahk или когда запускаю его для меня по расписанию (запланированное задание запускается от имени моего пользователя (который является администратором) и имеет «Выполнить». с высшими привилегиями "проверено). Но по какой-то причине двойной щелчок по файлу вручную, кажется, изменил некоторые настройки, так что скрипт AHK работает по-другому до следующей перезагрузки компьютера. Единственное различие, которое я могу вспомнить, заключается в том, что в запланированной задаче у меня в поле «Начать (необязательно)» установлена ​​папка, содержащая скрипт AHK (например, C: \ SomeFolder), тогда как при запуске файла .ahk вручную. двойным щелчком по нему я не знаю, установлено ли это.

Любые предложения с благодарностью. Благодарю.

3

1 ответ на вопрос

1
TheCompWiz

Проблема в том, что планировщик задач не запускается в том же сеансе пользователя, что и текущий вошедший в систему пользователь. (Да, он может быть запущен как один и тот же пользователь ... но один и тот же пользователь может иметь несколько сеансов в Windows, не все из которых запускаются в графическом интерфейсе). Что происходит, когда планировщик задач запускает приложения, но нет место для него для отображения графического интерфейса. Он не работает в том же сеансе, что и вошедший в систему пользователь.

Хм, я предположил, что, поскольку у меня есть запланированное задание для запуска «при входе в систему», оно будет выполняться в том же сеансе. Однако, ваше объяснение имеет смысл, а также объясняет, почему [TrayIt!] (Http://www.teamcti.com/trayit/trayit.htm) не может подключиться ни к каким окнам, которые я запускаю с помощью своего скрипта AHK. Так есть ли у вас какие-либо идеи о том, что я могу сделать, чтобы запустить запланированное задание в МОЕЙ сессии? Спасибо! deadlydog 11 лет назад 0
Не используйте запланированные задания. Поместите ярлык в папку автозагрузки пользователя или укажите запись в ключе `HKLM \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Run` в реестре. TheCompWiz 11 лет назад 0
Первоначально я пытался использовать папку автозагрузки, но ни один из этих вариантов не работает для меня, потому что мне нужен мой скрипт AHK для запуска от имени администратора. Если я скажу ярлыку в папке автозагрузки «Запуск от имени администратора», он просто не запустится (Windows 8 UAC блокирует его). Вот почему мне нужно использовать планировщик задач, потому что у него есть опция «Запуск с самыми высокими привилегиями». Я нашел [этот пост] (http://superuser.com/questions/278233/windows-7-task-scheduler-to-start-application-in-user-session), в котором говорится о создании запланированного задания из командной строки. используя параметр / IT, но это тоже не работает deadlydog 11 лет назад 0
Я также просто попытался удалить опцию «Запуск от имени администратора» из ссылки на папку автозагрузки и вместо этого поместить ее непосредственно в исполняемый файл Autohotkey.exe, но у меня был тот же результат, когда скрипт не запускался при запуске. Сейчас, похоже, мой лучший вариант - выяснить, как заставить планировщик заданий запускать задание в моем текущем сеансе пользователя. deadlydog 11 лет назад 0
взломать ... но это может работать для вас: http://www.shulerent.com/2012/03/07/getting-a-poorly-designed-clickonce-application-to-run-as-administrator/ TheCompWiz 11 лет назад 0
Хорошо, я попытался снова использовать ключ / IT при создании задачи из командной строки, и на этот раз это сработало :) Не знаю, почему это не было раньше. В качестве дополнительного бонуса, если вы также используете ключ / V1, он автоматически устанавливает задачу на «Запуск с наивысшими привилегиями» и устанавливает каталог «Начать с» в каталог, в котором находится исполняемая программа. Вот пример команды, которую я использовал создать задачу из командной строки: schtasks / Create / RU "[Domain] \\ [MyUsername]" / SC ONLOGON / TN "Запуск средства выбора команд AHK" / TR "D: \ AHKStuff \ AHKCommandPicker.ahk" / IT / V1 deadlydog 11 лет назад 0
Рад слышать, что у вас это работает! TheCompWiz 11 лет назад 0

Похожие вопросы