Próbuję napisać plik wsadowy, który musi uruchamiać niektóre polecenia przy użyciu lokalnego konta administratora (uruchomienie / zatrzymanie usługi), a niektóre polecenia przy użyciu zalogowanego użytkownika (kopiowanie plików z katalogu użytkownika) i mam problemy. Próbowałem następujących poleceń:
runy z / savecred
runas /user:(PC name)\(admin username) /savecred "net stop \"(service name)\""
runas /user:(PC name)\(admin username) /savecred "sc stop \"(service name)\""
Podczas korzystania /savecred
nie pojawia się monit o hasło. Zamiast tego okno wiersza polecenia krótko miga i znika. Nie jestem w stanie powiedzieć, co jest w tym oknie. Usługa nie została zatrzymana.
runy bez / savecred
runas /user:(PC name)\(admin username) "net stop \"(service name)\""
runas /user:(PC name)\(admin username) "sc stop \"(service name)\""
Te polecenia pytają mnie o hasło, ale następnie zachowują się tak samo jak powyższe polecenia - na krótko pojawia się okno wiersza poleceń i usługa nie jest zatrzymywana.
Idealnie chciałbym zapisać hasło do sesji, ponieważ będę musiał uruchomić więcej poleceń ze szczegółami.
Czy to możliwe, a jeśli tak, to co robię źle?
źródło
runas /user:(PC name)\(username) /savecred "net stop \"(service name)\"" >> log.txt
nic nie jest wyprowadzane do pliku dziennika.LOGBATCH.BAT yourbatch.bat any_parameters_your_batch_needs
utworzy plik dziennika zawierający każdą komendę / akcję wykonaną przezyourbatch.bat
Daj nam znać, co tam widzisz.Odpowiedzi:
Możesz dodać do skryptu następujące elementy, a to zmusi go do uruchomienia na podwyższonym poziomie. Nie musisz niczego pobierać.
źródło
Requesting administrative privileges...
na ekranie, aż upłynie limit czasu.podziel plik wsadowy na dwa. Część, którą chcesz uruchomić jako admincmd wklej do systemu32. Część, którą chcesz uruchomić w normalnym cmd, wklej ją do zwykłego folderu i stąd wywołaj drugi plik wsadowy, który jest system32. W ten sposób druga część zawsze działa w admincmd. Próbowałem i to działa dla mnie.
źródło
Jeśli nie przeszkadza ci oprogramowanie innych firm, możesz spróbować uruchomić jako hasło runasspc. Zapisze twoje hasło w zaszyfrowanym pliku. Hasło nie musi być ujawniane w pliku wsadowym.
źródło
Polecenie „Runas” nie spowoduje „sudo” polecenia.
Aby to zrobić z pliku wsadowego, musisz „podnieść” komendy, które spawnujesz. Pobierz skrypty Elevate Powertoy.
http://technet.microsoft.com/en-us/magazine/2008.06.elevation.aspx
Uruchom polecenia jako:
lub
źródło
runas /user:$PcName\$Username /savecred "elevate.cmd sc stop \"$ServiceName\""
,runas /user:$PcName\$Username /savecred "elevate.cmd net stop \"$ServiceName\""
,runas /user:$PcName\$Username /savecred "elevate.cmd net stop $ServiceName"
a każda z nich zwraca ten błąd: RUNAS błąd: Nie można uruchomić - elevate.cmd net stop alfrescoTomcat -2147467259: Nieokreślony błądUżywam następującego kodu:
Odłóż go po wyłączeniu @echo i uwagach.
źródło
Uproszczona odpowiedź (dodatek do user325534), jeśli musisz rozpocząć pracę w jakimś katalogu z dostępem wstępu:
źródło
Ten kod pozwala cmd zapytać o hasło użytkownika. Użytkownik musi wpisać swoje hasło, a następnie
executable.bat
zostanie uruchomiony jako administratormain.bat
plik wykonywalny
źródło
Podzieliłem swój kod na dwie części
zmiana nazwy pliku wykonywalnego zainstalowanego w plikach programu
uruchomienie go podniesione sprawiło, że program był bezużyteczny, ponieważ inne rzeczy, na których polegał, nie zostały podniesione
utworzył skrót do pliku nietoperza wymagającego podniesienia uprawnień i zaznaczył „uruchom jako administrator” we właściwościach. użyłem skrótu w innym pliku.
CONS
Poszedłem do takich długości, że plik wykonywalny działał automatycznie pomimo wyłączenia automatycznego uruchamiania w jego ustawieniach, a msconfig również ustawił obsługę na ręczną. To był mój ostatni wysiłek, żeby to się zachowało.
źródło