Sytuacja
Mam skrypt wsadowy, który przygotowuje niektóre pliki, wykonuje program ( .exe
), a następnie usuwa te pliki.
To zadanie powinno być uruchamiane co godzinę, więc próbuję je skonfigurować za pomocą Zaplanowanych zadań. Problem polega na tym, że poprzednio wspomniany program nie działa poprawnie, gdy jest wywoływany z zadania (ani przez .bat
skrypt, ani podczas .exe
bezpośredniego wywoływania ), ale nie otrzymuję żadnych ostrzeżeń ani komunikatów o błędach w dziennikach.
Ustawiać
Zadanie jest skonfigurowane do działania jako konto usługi systemu Windows, które ma poprawnie ustawione wszystkie uprawnienia. Używając tego konta do logowania przez RDP, mogę wykonać .bat
i .exe
bezpośrednio bez problemów, ale wydaje się, że zadanie nic nie robi. Można to łatwo zaobserwować, ponieważ program zawsze modyfikuje plik, a zmodyfikowany znacznik czasu nie zmienia się w zadaniu.
W dziennikach zaplanowanych zadań otrzymuję komunikaty informacyjne dotyczące zadania rozpoczynającego, kończącego proces itp. „Kod wyniku” jest jednak taki 111
(próbowałem to zrobić bez powodzenia w Google, jedyne skojarzenie, jakie otrzymałem, to „nazwa pliku jest za długa) ”, co jest po prostu zupełnie nieistotne AFAIK). W dziennikach aplikacji nie otrzymuję absolutnie nic.
Podejrzewam, że problem
Program jest starą potwornością, która odradza jakiś ekran powitalny (w rzeczywistości jest to normalne okno), mimo że GUI nie jest potrzebne, ponieważ nie wymaga interakcji i zamyka się po operacjach. Okno pojawi się na około 2 sekundy.
Podejrzewam, że to wymaganie dotyczące GUI ma coś wspólnego z niepowodzeniem zadania, ale nie jestem pewien. Kiedy loguję się do użytkownika, na którym działa zadanie (przez RDP), po uruchomieniu zaplanowanego zadania nie pojawia się żadne okno.
Edytuj informacje o GUI
Zbudowałem bardzo mały plik wykonywalny C #, który uruchamia program bez głównego okna (za pomocą ProcessStartInfo.WindowStyle = ProcessWindowStyle.Hidden
). Nawet w ten sposób zaplanowane zadanie nadal nie uruchamia się poprawnie, ale kod powrotu jest teraz 0
.
Aktualizacja
Gdy konfiguruję zadanie, aby powiedzieć „uruchom bez względu na to, czy użytkownik jest zalogowany”, a run with highest privileges
opcja nie jest zaznaczona , wartością błędu jest 2147943859
.
Co mogę zrobić, aby rozwiązać problem?
System operacyjny = Windows Server 2008 R2 SP1
Jeśli potrzebujesz więcej informacji, daj mi znać w komentarzach.
.exe
„programu” z parametrami ze skryptu, dane wejściowe muszą być poprawnie podane jako argument.