Wyłącz komputer w sieci LAN

0

Dobry dzień

Trochę tła, aby stwierdzić, że nie mam złośliwych zamiarów w moim pytaniu: mam na myśli automatyzację domu i poczynienie dobrych postępów: kilkadziesiąt urządzeń można programowo włączać i wyłączać z dowolnego komputera w domu za pomocą mojej aplikacji VB6 (i tam są inne funkcje, takie jak blokowanie urządzenia, aby zapobiec jego wyłączeniu).

Następnym krokiem jest wdrożenie samodzielnie opracowanego języka skryptowego w celu automatyzacji sekwencyjnych zadań. Język definiuje programy w folderach zadań. Na przykład jeden z takich programów, zwany „Dobranoc”, ma za zadanie zamknąć na noc wszystkie „nieistotne” maszyny.

Ale bez względu na to, jak spróbuję, wydaje mi się, że nie jestem w stanie zmusić komputera w mojej sieci LAN do prawidłowego zamknięcia (tj. Do wyłączenia go, a jeszcze lepiej do hibernacji). Oczywiście mogę odebrać moc komputera, ale cóż ...

Shutdown / s / m \\ nazwa_komputera wydaje się naturalnym wyborem, ale podobno nie działa na komputerze zdalnym po Windows XP. Z pewnością nie działa w moim środowisku Windows 8.1: kończy się na „Odmowa dostępu (5)”. Uruchamianie cmd jako administrator nie daje mi pożądanego dostępu.

Jak mogę wykonać swoje zadanie za pomocą powłoki? (Lub VB6, oczywiście, ale jeśli to możliwe za pośrednictwem powłoki, powinienem również zarządzać w VB6).

Z góry dziękuję!

Ziele
źródło
Dlaczego wymyślasz własny język skryptowy i nie używasz czegoś, co jest dobrze znane? Jeśli dostaniesz odmowę dostępu, prawdopodobnie brakuje Ci uprawnień. Czy próbowałeś podać odpowiednie poświadczenia? Które byłyby poświadczeniami zdalnego komputera.
Seth
@Seth, jak podać dane uwierzytelniające za pomocą polecenia Zamknij w oknie wiersza polecenia?
Herb
Samo zamknięcie systemu używa danych uwierzytelniających aktualnie zalogowanego użytkownika. Jeśli te poświadczenia nie są przeznaczone dla użytkownika na zdalnym komputerze z uprawnieniem do zdalnego zamykania go, dostęp jest zabroniony . Użyj PSShutdown (z SysInternals; Google it), aby wykonać zdalne zamknięcie i określić inne poświadczenia.
Twisty Impersonator

Odpowiedzi:

1

Polecenie zamknięcia DZIAŁA, ale należy je włączyć na komputerze docelowym. Dlatego wyszukaj w Internecie „zasadę filtrowania tokenów zdalnego zamykania”.

Po drugie, musisz uwierzytelnić się na komputerze zdalnym, aby móc przeprowadzić showdown. Polecenie shutdown nie udostępnia funkcji przesyłania poświadczeń logowania, dlatego przed zamknięciem należy wysłać je w inny sposób. W tym celu sugeruję zmapowanie dysku sieciowego. Działa dla mnie dobrze. W tym celu nie musisz tworzyć udziału sieciowego w celu, zamiast tego użyj IPC $.

Uwaga: musisz zalogować się na celu przy użyciu poświadczeń komputera docelowego! Lokalne prawa do tych danych uwierzytelniających nie są istotne; użytkownik docelowy może nawet nie istnieć lokalnie. ORAZ użytkownik docelowy musi mieć wystarczające uprawnienia, aby zamknąć cel.

Tobias Knauss
źródło
Dzięki, to wygląda obiecująco. Poszedłem więc do komputera docelowego i w jego rejestrze utworzyłem DWORD HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Windows \ CurrentVersion \ Policies \ System \ LocalAccountTokenFilterPolicy o wartości 1. To było wymagane zgodnie z pierwszym akapitem, prawda? Nie jestem jednak pewien co do następnego akapitu. Oczywiście użycie sieci \\ NazwaKomputera \ IPC $ nie wystarczy. Jak wskazano w ostatnim akapicie, należy podać poświadczenia komputera docelowego, ale w jaki sposób i co rozumiesz przez „użytkownik docelowy może nawet nie istnieć lokalnie”.
Herb
OK, rozumiem Argument użytkownik: wymagał dodania grupy roboczej w celu działania. Teraz żądane maszyny zamykają się zgodnie z potrzebami. Dziękuję Ci!
Herb
1
Docelowy użytkownik nie musi istnieć lokalnie. O to mi chodziło. Chcesz połączyć się z komputerem docelowym, więc musisz użyć kont użytkowników tego komputera. Użytkownicy na lokalnym komputerze nie są potrzebni do zdalnego wyłączania. Nie potrzebujesz nawet lokalnych uprawnień administratora. Potrzebujesz tylko wystarczających uprawnień do celu.
Tobias Knauss
Dodatkowo należy zauważyć, że na komputerze docelowym musi być również włączona usługa Rejestr zdalny (Ctrl + R, services.msc, kliknij prawym przyciskiem myszy Rejestr zdalny, Właściwości, zmień Podręcznik na Automatyczny), a także musisz zezwolić WMI na ominąć zaporę (Zapora systemu Windows, Zezwalaj programowi, Zmień ustawienia, Instrumentacja zarządzania Windows (WMI), zaznacz Strona główna / Praca). Po zakończeniu uruchom ponownie cel.
Herb
@Herb: nie było to konieczne na moich komputerach.
Tobias Knauss
0

Istnieją trzy sposoby zdalnego uruchamiania poleceń systemu Windows.

  1. Użyj PSExec Sysinternals

  2. Użyj WMI do uruchamiania poleceń zdalnych

  3. Użyj ControlUp, aby uruchomić polecenia zdalne

Szczegółowe informacje można znaleźć tutaj .

ubercracker
źródło