Windows'u bir bat dosyası aracılığıyla nasıl kapatabilir, yeniden başlatabilir veya oturumu kapatabilirim?

Bir iş istasyonuna girmek için Uzak Masaüstü Bağlantısı kullanıyorum. Ancak bu ortamda Başlat Menüsü'ndeki güç seçeneklerini kullanamıyorum. Kapatmak veya yeniden başlatmak için alternatif bir yola ihtiyacım var.

Bilgisayarımın güç durumunu komut satırı üzerinden nasıl kontrol edebilirim?

Çözüm

Shutdown`]1 komutunu kullanmanın en yaygın yolları şunlardır:

  • shutdown -s - Kapanır.

  • shutdown -r - Yeniden başlatır.

  • shutdown -l - Oturumu kapatır.

  • shutdown -h - Hazırda bekletir.

    Not: Kullanıcıların -h'nin "help" anlamına geldiğini düşündüğü yaygın bir tuzak vardır (diğer tüm komut satırı programları için olduğu gibi... "hibernate" anlamına geldiğishutdown.exe' hariç). Daha sonra shutdown -h komutunu çalıştırırlar ve yanlışlıkla bilgisayarlarını kapatırlar. Buna dikkat edin.

  • shutdown -i - "Etkileşimli mod". Bir eylem gerçekleştirmek yerine, bir GUI iletişim kutusu görüntüler.

  • shutdown -a - Önceki kapatma komutunu iptal eder.

Yukarıdaki komutlar bu ek seçeneklerle birleştirilebilir:

  • f` - Programları çıkmaya zorlar. Kapatma işleminin takılıp kalmasını önler.

  • -t - Kapanmaya kadar geçecek süreyi ayarlar. Hemen kapatmak için -t 0 kullanın.

  • -c - Bir kapatma mesajı ekler. Mesaj Olay Günlüğünde yer alacaktır.

  • y` - Tüm kapatma sorgularına "yes" yanıtını zorlar.

    Not: Bu seçenek herhangi bir resmi belgede belgelenmemiştir. Bu StackOverflow kullanıcıları]2 tarafından keşfedilmiştir.


Bu cevapla birlikte diğer bazı gerçekten iyi cevaplardan da bahsedildiğinden emin olmak istiyorum. İşte belirli bir sıraya göre değiller.

Yorumlar (7)

Uzak bir makinedeyseniz, yeniden başlatmayı zorlamak için -f seçeneğini de eklemek isteyebilirsiniz. Aksi takdirde oturumunuz kapanabilir ve inatçı bir uygulama sistemi kilitleyebilir.

Anında yeniden başlatmaya zorlamak istediğimde bunu kullanıyorum:

shutdown -t 0 -r -f

Daha dostane bir "onlara biraz zaman ver" seçeneği için bunu kullanabilirsiniz:

shutdown -t 30 -r

Yorumlarda görebileceğiniz gibi, -f zaman aşımı tarafından ima edilmektedir.

Brutus 2006 bu seçenekler için bir GUI sağlayan bir yardımcı programdır.

Yorumlar (3)

Orijinal cevap: Ekim 2008

Ayrıca tüm "rundll32.exe shell32.dll" serilerini de aldınız:

(aşağıdaki güncellemeye bakınız)

  • rundll32.exe user.exe,**ExitWindows** [Windows'un Hızlı Kapatılması]

  • rundll32.exe user.exe,**ExitWindowsExec** [Windows'u Yeniden Başlat]

      rundll32.exe shell32.dll,SHExitWindowsEx n

burada n anlamına gelir:

  • 0 - LOGOFF
  • 1 - KAPATMA
  • 2 - REBOOT
  • 4 - KUVVET
  • 8 - POWEROFF

(birleştirilebilir -> 6 = 2+4 FORCE REBOOT)


Güncelleme Nisan 2015 (6+ yıl sonra):

1800 BİLGİ nazikçe yorumlarda işaret etmektedir:

Bu amaç için rundll32.exe dosyasını kullanmayın. Komut satırında aktardığınız işlevin çok özel bir yöntem imzasına sahip olmasını bekler - ExitWindows yöntem imzasıyla eşleşmez.

Raymond CHEN yazdı:

rundll32.exe tarafından çağrılan işlevler için gerekli işlev imzası:

void CALLBACK ExitWindowsEx(HWND hwnd, HINSTANCE hinst,
       LPSTR pszCmdLine, int nCmdShow);

Bu durum, insanların rundll32 tarafından çağrılmak üzere tasarlanmamış user32 LockWorkStation veya user32 ExitWindowsEx gibi rastgele işlevleri çağırmak için rundll32 kullanmalarını engellememiştir.

(oops)

ExitWindowsEx için gerçek fonksiyon imzası şöyledir:

BOOL WINAPI ExitWindowsEx(UINT uFlags, DWORD dwReserved);

Ve bunu kristal berraklığında yapmak için:

Rundll32 Windows 95'ten kalmadır ve birçok modern mühendislik kuralını ihlal ettiği için en azından Windows Vista'dan beri kullanımdan kaldırılmıştır.

Yorumlar (6)