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.
źródło
cscript.exe
i sprawdź, czy się uruchomi.Odpowiedzi:
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
.Korzystanie z drugiej opcji jest bezpieczniejsze, ale czyni ją bardziej restrykcyjną.
źródło
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.
źródło