ręczne wykonanie skryptu działa, ale nie w harmonogramie zadań

0

Mam problemy z harmonogramem zadań w systemie Windows 7 Pro. Chcę uruchomić skrypt. Ręczne wykonanie działa idealnie, menedżer zadań nic nie robi.

Część skryptu ustawia fokus w określonym oknie za pomocą tego VBScript:

Dim ObjShell :Set ObjShell = CreateObject("Wscript.Shell")
ObjShell.AppActivate("Notepad")

2 linie powyżej są tylko częścią większego skryptu, ale do sprawdzania błędów wykluczyłem wszystko inne. Najpierw muszę uruchomić to, a potem oryginał.

Notatnik jest oczywiście otwarty, a ręczne wykonanie VBS ustawia ostrość. Uruchomienie skryptu za pomocą harmonogramu zadań nie ustawia ostrości. Nawet uruchomiłem skrypt ręcznie w harmonogramie zadań (prawy przycisk myszy - uruchom) - nie ustawia ostrości.

Zadanie jest uruchamiane z podwyższonymi uprawnieniami i z tym samym użytkownikiem co uruchamianie ręczne. Komputer nie jest wyłączony, nie zablokowany.

Dlaczego skrypt działa ręcznie, ale nie w harmonogramie zadań? Jak mogę go uruchomić w harmonogramie zadań?

€ dit: Chcę uruchomić plik vbs, a nie plik .bat, jeśli to możliwe, ponieważ nie chcę, aby otwierało się okno cmd.

eckhart
źródło
1
Spróbuj zmienić go na cscript.exei sprawdź, czy się uruchomi.
NetworkKingPin
Próbowałem, ale nie :( Utworzyłem inny plik .bat z plikiem cscript.exe script.vbs, ale nie działa::
eckhart

Odpowiedzi:

1

Aby zadanie miało dostęp do sesji interaktywnej (tj. Z uruchomionymi programami i otwartymi oknami), musisz skonfigurować ją tak, aby działała pod zalogowanym użytkownikiem. Po prostu przejdź do właściwości zadania i na karcie Ogólne wybierz Run only when user is logged on.

Okno dialogowe właściwości zadania

Korzystanie z drugiej opcji jest bezpieczniejsze, ale czyni ją bardziej restrykcyjną.

efotinis
źródło
0

AppActivate nie działa z zadania ; najprawdopodobniej jako środek bezpieczeństwa.

Ogólna rada dotycząca sieci (zakładając, że chcesz używać SendKeys i podobnych), to rezygnacja z AutoIt zamiast VBScript.

PS: Próbowałem również programu PowerShell z SetForegroundWindow (importowanym z user32.dll) i zachowywał się tak samo jak VBS.

Ƭᴇcʜιᴇ007
źródło