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ę!
źródło
Odpowiedzi:
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.
źródło
Istnieją trzy sposoby zdalnego uruchamiania poleceń systemu Windows.
Użyj PSExec Sysinternals
Użyj WMI do uruchamiania poleceń zdalnych
Użyj ControlUp, aby uruchomić polecenia zdalne
Szczegółowe informacje można znaleźć tutaj .
źródło