2010-09-19 12 views
5

Mam kilka skryptów, które chciałbym uruchomić za każdym razem, gdy użytkownik się wyloguje. Chciałbym stworzyć coś, co programowo skonfiguruje skrypty wylogowania. Na przykład plik exe lub cmd, który można wykonać w celu dodania skryptu wylogowania do listy skryptów wylogowania wykonywanej przez system Windows. Z tego powodu preferowana byłaby funkcja API Windows lub polecenie powłoki systemu Windows, ale nie mogę znaleźć takich funkcji ani poleceń, które by mu w tym pomogły.Dodawanie skryptu wylogowania

Sprawdziłem zmiany w rejestrze wprowadzone przez edytor strategii lokalnej grupy, gdy używa się go do dodania skryptu wylogowania do zasad grupy, ale robi to wiele rzeczy, których nie jestem pewien, czy mogę naśladować. Na przykład powoduje wiele zmian w rejestrze i wykorzystuje kody numeryczne w niektórych kluczach rejestru oraz dane binarne w niektórych wartościach. Nie wiedziałbym, jakie wartości reprezentują.

Próbowałem podzbiorów zmian, które robi GPEdit w nadziei, że nadal będzie działać. Na przykład wyeksportowałem zmiany wprowadzone w HKCU \ Software \ Policies \ Microsoft \ Windows \ System \ Scripts \ Logoff i zaimportowałem je na innym komputerze, ale to nie zadziałało, a GPEdit MMC nie zdawała sobie sprawy, że nawet zrobiłem zmiana.

Jak już powiedziałem, zestaw funkcji Windows API lub polecenie powłoki systemu Windows byłby lepszy, jeśli ktoś wie o niektórych, które mogą pomóc, ale jeśli ktoś wie, sposób dekodowania sterty informacji, które GPEdit robi w sposób że mógłbym z niego kpić, a nie jestem przeciwny wprowadzaniu zmian w rejestrze, o ile są stabilne.

Niezależnie od tego, jakie rozwiązanie znajdę i będę używać, musi być w stanie być automatyczny i niezawodny, ponieważ będzie on zdalnie wykonywany na wielu komputerach z dodatkiem Psexec, a także zostanie włączony do zautomatyzowanych procesów konfiguracji dla przyszłych komputerów, które są Ustawiać.

Niestety, wydaje się, że jest to trudny temat dla Google, ponieważ wiele innych rzeczy, które ludzie próbują zrobić, ma wiele takich samych słów kluczowych, o które pytam, ale które w rzeczywistości nie są tym samym tematem. Na przykład przechwytywanie/odczytywanie haków do uruchamiania aplikacji lub zdalne wylogowywanie użytkowników.

Jeśli ktoś jest kreatorem rejestru systemu Windows lub MMC i uważa, że ​​zobaczenie zrzutu zmian w rejestrze, które robi GPEdit MMC, gdy robi to samo, byłoby pomocne, po prostu powiedz to, a udostępnię to, ponieważ już to przechwyciłem. Wątpię, że to jest właściwa droga, ale zacząłem się zastanawiać, w jaki sposób tworzyć przystawki MMC; myślę, że być może przystawka GPEdit może zostać poddana inżynierii wstecznej, dzięki czemu mogę dokładnie zobaczyć, co robi w prosty sposób. Nie dzieje się to jednak szybko, ponieważ żaden z plików .adm, które widzę, nie wydaje się mieć odpowiednich ustawień, a plik gpedit.msc nie zawiera niczego, co mogłoby go rozdać w części tekstowej, chociaż to sekcja, która wydaje się bełkotliwa, więc może jest tam jakaś magia.

+0

Dlaczego nie utworzyć procesu, który jest autostartowany, więc zostanie wyłączony po wylogowaniu. Możesz złożyć na nim wszystko po wylogowaniu. – TheBlastOne

+0

@TheBlastOne Co masz na myśli? Masz na myśli utworzenie skryptu logowania, który po prostu siedzi bezczynnie na zawsze, działając w kontekście aktualnie zalogowanego użytkownika, aby został zakończony przy wylogowaniu i miał funkcję wyjścia, która dzieje się po main()? To ciekawy pomysł, jeśli o to ci chodzi. Czy wymuszone wylogowanie (takie jak shutdown -l -f) nadal czeka na zakończenie procesu (i robi normalny skrypt wylogowania systemu Windows, o to chodzi, teraz, gdy o tym myślę, choć zakładam, że tak)? Może zrobię kilka testów. – Loduwijk

+0

Cóż, niekoniecznie skrypt logowania, ponieważ to nie jest dokładnie lekki :) i musiałby być ukryty przed biurkiem ... Myślałem o aplikacji bez GUI, która jest częścią grupy autostart (lub zaczęła się od użytkownika zaloguj się za pomocą dowolnego z innych haków autostartu, które zapewnia Windows). Że można spać na zawsze i wywołać wszystko, co chcesz po zakończeniu. Ponieważ jest to "aplikacja", tylko bez GUI, będzie obsługiwana jak każda inna aplikacja po wyłączeniu, włącznie z zabijaniem po wymuszonym zamknięciu itd.). – TheBlastOne

Odpowiedz

2

Harmonogram zadań może to zrobić od wersji Windows Vista. W przypadku Windows XP i wcześniejszych nie wydaje się, aby była to dobra odpowiedź. XP nie ma wymienionego niżej wyzwalacza "Odłącz od użytkownika".

Istnieją dwa główne narzędzia wiersza poleceń do planowania zadań w systemie Windows: at.exe i schtasks.exe. Same nie wydają się dostarczać wszystkich opcji, które można uzyskać z interfejsu GUI (choć schtasks jest bardzo blisko). Jednak Harmonogram zadań ma format XML opisujący zaplanowane zadania, a narzędzie schtasks.exe ma opcję importowania zadań z pliku XML.

Aby utworzyć skrypt wylogowania, utwórz plik XML opisujący zadanie, które chcesz utworzyć. Upewnij się, że używasz wyzwalacza "Przy rozłączaniu z sesją użytkownika" i wybierz opcję wylogowania z "dowolnego użytkownika" (wymagającego podwyższonych uprawnień) i "połączenia z komputera lokalnego". Skonfiguruj wszystkie pożądane akcje wylogowania (takie jak skrypty wylogowania) jako akcje zadań.

Firma Microsoft zawiera listę przykładów tworzenia zadań dla Harmonogramu zadań, w tym przykłady XML. Możesz znaleźć tę listę here.

Ewentualnie możesz ustawić swoje zadanie raz za pomocą narzędzia GUI, a następnie kliknąć prawym przyciskiem myszy zadanie, w którym pojawia się na liście zadań, i wybrać opcję "Eksportuj". Otrzymasz okno dialogowe, które pozwoli ci zapisać zadanie w formacie XML.

Następnie skrypt konfiguracja zadania za pomocą następującego polecenia:

schtasks /create /tn "Task Name Here" /XML "path to xml file here" /ru domain\username /rp "password" 

Uwaga: częściowy kredyt powinien udać się do user606602 za sugestię, aby skorzystać z harmonogramu zadań, choć sugerował użycie GUI wniosku, który, jak na moje pytanie, nie działałby w tym kierunku. Próbowałem edytować jego odpowiedź za pomocą skryptowej wersji jego sugestii, a następnie zaakceptować, ale opinia recenzentów odrzuciła tę zmianę.

1

Nie można po prostu użyć programu do planowania zadań systemu Windows do uruchomienia skryptów?

Nowsze wersje harmonogramu zadań (np. Windows Server 2008, Windows Vista/7) powinny umożliwiać uruchamianie skryptów uruchamianych przy wylogowaniu użytkownika.

Zobacz here

Wszystko, co musisz zrobić, to utworzyć nowe zadanie, a następnie utworzyć nowy spust. Z tego okna wybierz "Odłącz od sesji użytkownika" z rozwijanego menu, a następnie wybierz skrypty, które chcesz uruchomić z zakładki "Czynności" w oknie konfiguracji zadania.

+0

Ta odpowiedź całkowicie pomija fakt, że powiedziałem, że to wszystko jest zautomatyzowane i dlatego wymaga skryptu lub exe. Zmieniłem twoją odpowiedź, aby była bardziej kompletna i faktycznie rozwiązała kwestię, która jest pod ręką. To pokazuje mi "Edycja będzie widoczna tylko dla ciebie, dopóki nie zostanie sprawdzona przez recenzentów". Przyjmuję odpowiedź po tym, jak to się stało. – Loduwijk

+0

Ponadto, w momencie, gdy zadawałem pytanie, używaliśmy prawie wyłącznie XP, który nie pozwala na to z jego wersją Task Scheduler. W końcu używamy połowy systemu Windows 7, a druga połowa naszych komputerów zostanie przekształcona na 7 później w tym roku, więc teraz to obowiązuje, ponieważ harmonogram jest znacznie bardziej wydajny i zacząłem go używać w ostatnim miesiącu lub dwóch. Byłoby miło, gdyby ktoś mógł nadal zapewniać to w XP. – Loduwijk

+0

To dziwne, edycja (wspomniana powyżej) zniknęła. Przypuszczam, że oznacza to, że przegląd wzajemny nie powiódł się? Nie ma sensu, ponieważ ta odpowiedź była od 1/2 do 3/4 drogi, to po prostu nie adresowała części skryptowej, którą wtedy edytowałem. Przepraszam, chyba nie mogę zaakceptować odpowiedzi. Będę musiał udzielić nowej odpowiedzi z wprowadzonymi poprawkami. – Loduwijk

Powiązane problemy