Bir Windows makinesinden kullanıcıları otomatik olarak nasıl kapatabilirim?


9

Tek, çok kullanıcılı tek bir makinede çalıştıktan sonra kullanıcıların oturumu kapattığından emin olmak istiyorum. Şu anda, bir sonraki kullanıcı sadece "kullanıcı değiştirecek" ve çalışmaya devam edecektir, ancak birçok kullanıcının aynı anda açık programları ile oturum açmış olması kaynakları tüketiyor gibi görünüyor.

24 saat boyunca aktif olmadıkları takdirde kullanıcıların bir makineden otomatik olarak çıkış yapmaları mümkün müdür?


Alternatif olarak, gece yarısı mevcut kullanıcı dışında herkesi kapatmak mümkün mü?

Bilgisayar bir Windows etki alanı ağında - ancak otomatik oturum kapatmanın tek bir makine için çalışmasını istiyorum (ve ağ yöneticisi değilim)

.


1
Bu bir Windows etki alanı ağı mı?
Moab

@Moab: Bilgisayar bir Windows etki alanı ağında - otomatik oturum kapatmanın yalnızca tek bir makine için çalışmasını istiyorum (ve ağ yöneticisi değilim).
Jonas

@ Jonas, Sözcük seçiminiz birden fazla PC'ye benziyor, orijinal yayınınızı bu yeni bilgileri içerecek şekilde düzenleyebilirsiniz.
Moab

@ Moo: Soruyu açıklığa kavuşturmaya çalıştım. Bu daha iyi mi?
Jonas

Şimdi, bir göz atın.
Moab

Yanıtlar:


6

Bağlantısı kesilmiş kullanıcıların oturumunu, geçerli kullanıcıyı bağlı tutarken oturumu kapatmak için, aşağıdaki komut dosyası kodunu "LogOffUsers.cmd" gibi bir .cmd dosyasına kopyalayın ve gece yarısı hizmet olarak çalıştırın:

@echo off
for /f "tokens=1-7 delims=,: " %%a in ('query user ^| find /i "disc"') do logoff %%b

Komut dosyası , "disk" ifadesini arayarak bağlantısı kesilen kullanıcıları bulmak ve ardından oturumu kapatmak için sorgu komutunu kullanarak çalışır .

Komut dosyasının bir hizmet olarak sürekli olarak çalışmasını, belirli bir süre için bağlantı kesildiğinde / devre dışı bırakıldığında kullanıcıların oturumunu kapatmasını istiyorsanız, şunu kullanırsınız:

@echo off
:Top
for /f "tokens=1-7 delims=,: " %%a in ('query user ^| find /i "disc"') do if %%d GTR 32 (logoff %%b) else %%e GTR 32 (logoff %%b)
choice /T 120 /C 1 /D 1 /N
goto top

Bu komut dosyası aynı sorgu komutunu kullanır, ancak sonuçların "BOŞALTMA SÜRESİ" bölümünü denetler ve boşta kalma süresi 32'den büyükse ("GTR 32") kullanıcının oturumunu kapatır. Bu ifade iki kez oluşur, çünkü "BOŞALTMA ZAMANI" belirteci iki farklı konumda olabilir. Daha sonra "seçim" ile başlayan hat, işlemi tekrar başlayarak tekrar gerçekleştirmeden önce 2 dakika bekler. İhtiyaçlarınıza göre "32" değerini artırabilir veya azaltabilirsiniz.

Burada bulundu .


@ eMansipater: Bunun ne yaptığını ve 24 saati nerede ayarlayabileceğimi açıklar mısınız?
Jonas

1
En iyi çözüm hızlı kullanıcı değiştirmeyi devre dışı bırakmaktır, bu yeni kullanıcının hesaplarına giriş yapmadan önce oturumu kapatmaya zorlar.
Moab

1
@Moab hızlı kullanıcı değiştirmeyi devre dışı bırakmak, önceki kullanıcı ekranı kilitlediyse yönetici olmayan bir kullanıcının oturum açamayacağı anlamına gelir. @Jonas Akıllıca bir soru - parantez içindeki bit, support.microsoft.com/kb/186592 adresindeki sorgu komutunu kullanarak "disk" ifadesini arayarak bağlantıyı kesen kullanıcıları bulmak, ardından oturumu kapatmaktır. Seçim komutu işlemi yalnızca 2 dakikada bir gerçekleştirmeyi bekliyor. 24 saat seçeneğine gerek yoktur, çünkü bu komut dosyası yalnızca başka bir kullanıcı oturum açtıysa bir kullanıcının oturumunu
kapatmalıdır

1
@Jonas bir toplu iş dosyası "%% a" kullanır, ancak aynı şeyi komut satırında yapmak için "% a" yazarsınız - hata ayıklamaya yardımcı olur. Komut dosyasını denemek için kullanışlı bir Windows makinem yok, bu yüzden ince bir şey olabilir. "GTR 32 (logoff %% b)" komutlarını tırnak işaretleri olmadan "echo logoff %% b" olarak veya yazarken tırnak işaretleri olmadan "echo logoff% b" olarak değiştirmeyi deneyebilirsiniz. Bu şekilde, oturumu kapatmaya çalışıyor. Çöp yazdırırsa veya hiçbir şey yazmazsa, komut dosyasının hatalı biçimlendirildiğini gösterir. Korkarım kontrol etmek için ezbere "sorgu" çıktı biçimini bilmiyorum.
eMansipater

1
@Jonas Sorgu komutunun çıktısını iki kez kontrol etme şansım oldu ve komut dosyasının bu bölümleri, oturum kapatmanın yalnızca kullanıcı belirli bir süre boyunca boşta kalması durumunda gerçekleşecekti. '%% d GTR 32', %% d belirteci 32'den büyükse oturum kapatma komutunu çalıştırmak anlamına gelir. Uzak masaüstünün vb. kullanımına bağlı olarak "boşta" belirteci iki yerde görünebilir, bu nedenle komut dosyası her iki senaryoyu da denetler. Üzerinde değişiklik yapılmış versiyonu basitçe oturum herhangi olursa olsun ne kadar oldu boşta kullanıcıyı. Bir Windows makinesine gidersem sözdizimini doğrulayabilirim.
eMansipater

1
for /f "tokens=1-7 delims=,: " %%a in ('query user ^| find /i "disc"') do if %%d GTR 32 (logoff %%b) else (if %%e GTR 35 (logoff %%b))

Yukarıdakilerin sadece boşta kalan dakikalar için çalışacağını, bağlantısız oturumdan çıkmadan önce saatlerce boşta kalma süresini kullanmak istiyorsanız, hafif bir değişiklik yapmanız gerektiğini unutmayın.

for /f "tokens=1-8 delims=,:/ " %%a in ('query user ^| find /i "disc"') do if %%d GTR 23 (if %%h GTR 2012 (logoff %%b))

Saati ayarlamak için 23 değerini değiştirin, yukarıdaki 24 saat veya daha fazla boşta kalma süresi üzerinde çalışacaktır. %% h 2012, %% d değerinin dakika değil, bir saat olmasını sağlar.


0

"Kullanıcı Değiştir" özelliğini devre dışı bırakmanın bir yolunu ararım. Bu yardımcı olabilir.


Aslında "kullanıcı değiştir" özelliğini seviyorum: bu şekilde, uzun bir hesaplama yapan biri diğer kullanıcıların da bilgisayarı kullanmasını engellemez.
Jonas
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.