Windows'un Güvenli Modda çalışıp çalışmadığını nasıl anlayabilirim?


14

Güncellemelerden sonra bazen güvenli modda yeniden başlatılacak bir Windows sunucum var. Bu sorun üzerinde çalışıyorum ama gerçekten bilmek istediğim, Windows'un güvenli modda çalışıp çalışmadığını nasıl kontrol edebileceğim.

İdeal olarak durumu Nagios kutumuza pasif bir çek gönderecek bir senaryoya dahil etmek istiyorum.

Kullanabileceğim bazı çevresel değişkenler veya bu bilgiyi komut satırı üzerinden almanın bir yolu var mı?


1
Windows'ta "tek kullanıcı modu" yok ... Güvenli Mod'dan mı bahsediyorsunuz?
Massimo

1
güncellenmiş soru ve "tek kullanıcı modu", "güvenli mod" olarak değiştirildi - özür dilerim
cwd

Soru aslında ilginç, biraz araştırdım ve bir sistemin güvenli modda çalışıp çalışmadığını programlı olarak kontrol etmek için makul bir yol bulamadım ("cihaz sürücüsü olmadan" gibi) ... ama lütfen Terminal Hizmetleri'nden bahsederken @ joeqwerty'nin cevabını kabul etmeyin.
Massimo

3
Bunu tamamen yanlış yapıyorsun. Bazen güvenli moda önyükleme yapan bir sunucunuz varsa, belirtiyi tedavi etmenin bir yolu değil, kök nedeni aramalısınız. Sunucu bunu ancak ciddi bir çökmeden sonra yapacaktır. Çökmelere neyin neden olduğunu öğrenin ve düzeltin.
John Gardeniers

2
@JohnGardeniers, dürüst olmak gerekirse, bu konuda çalıştığını söyledi ...
Massimo

Yanıtlar:



8

Göre bu makalede , adlı bir ortam değişkeni SAFEBOOT_OPTIONayarlandığında ya Minimalya Networksistem güvenli modda veya ağ desteği ile güvenli modda başlatıldıktan ise; aksi takdirde, değişken ayarlanmamıştır.

Değişkenin değeri üzerinde yapılan bir test hile yapmalıdır; ancak, sistem aslında Güvenli Modda çalışıyorsa, bununla başlamak için hiçbir ağa sahip olmayacağını unutmayın, bu nedenle durumunun bildirilmesi zor olabilir.


Hızlı Güvenli Mod yeniden başlatıldığında da bunu doğruladı.
Massimo

3

EDIT: benim kötü, KB kendi başına bir cevap olarak temelde yararsız olduğunu anlamak için yeterince iyice okumadım.

Eğer dan değil güvenli modda iseniz Daha kullanışlı bir yoldur belirlemek için : Microsoft® Windows® Internals: Microsoft Windows ServerTM 2003, Windows XP, and Windows 2000tarafından Mark E. Russinovich David A. Solomon .

Windows çekirdeği, önyükleme sırasında güvenli mod anahtarlarını bulmak için önyükleme parametrelerini tarar ve iç değişkeni InitSafeBootMode'u çekirdeğin bulduğu anahtarları yansıtan bir değere ayarlar . Çekirdek , SCM gibi kullanıcı modu bileşenlerinin sistemin hangi önyükleme modunda olduğunu belirleyebilmesi için InitSafeBootMode değerini HKLM \ SYSTEM \ CurrentControlSet \ SafeBoot \ Option \ Option Value kayıt defteri değerine yazar .

Yukarıdakileri alın ve aşağıdakilerle eşleştirin ve yararlı bir şeye çevirebileceğiniz sayısal bir değerle kontrol edebileceğiniz bir kayıt defteri konumuna sahip olacaksınız.

"Sistemin bir aygıt sürücüsünden Güvenli Modda çalışıp çalışmadığını belirleme" başlıklı support.microsoft KB'den.

Windows işletim sistemi çekirdeği, InitSafeBootMode adlı bir ULONG değişkenine bir işaretçi verir. Bu değişken Güvenli Mod ayarlarını içerir.

Bir aygıt sürücüsü, sistemin InitSafeBootMode değişkeninin değeri ile Güvenli Modda çalışıp çalışmadığını belirleyebilir. 0 değeri, sistemin Güvenli Modda çalışmadığı anlamına gelir.

Aşağıdaki tabloda diğer değerlerin modları listelenmektedir.
Değer Modu
1 SAFEBOOT_MINIMAL
2 SAFEBOOT_NETWORK
3 * SAFEBOOT_DSREPAIR
* Not 3 değeri yalnızca Windows etki alanı denetleyicileri için geçerlidir.


Bunu komut satırı üzerinden kontrol etmenin herhangi bir yolu veya kontrol edebilecek bir uygulama yazmam gerekir InitSafeBootModemi?
cwd

"Makul bir yol bulamadım" yorumumla bahsettiğim şey ... ... bunu kontrol etmek için bir aygıt sürücüsü yazabilseniz bile, hedef sistemde çalıştırmak oldukça zor olurdu .
Massimo

@cwd Aslında bir çekirdek modu sürücüsüne ihtiyacınız olacaktır. Ve kurulu olmasını sağlamak. Ve güvenli modda bile çalışıyor. Ve sonra sürücü ile konuşmak ve durumunu bildirmek için bir uygulama. Bu gerçekten çok çirkin ve hızlı olur.
Massimo

1
@cwd İşte, KB bağlantısını bulduğumda yeterince yakından kontrol etmedi. Cevap şimdi sizin için yararlı bilgiler içermelidir.
HopelessN00b

@ HopelessN00b Onaylandı (Kontrol etmek için aslında Güvenli Modda yeniden başlattım). Anahtar HKLM\SYSTEM\CurrentControlSet\SafeBoot\Option, Güvenli Mod olmayan bir sistemde hiç mevcut değildir, ancak Güvenli Mod'da bulunur.
Massimo

3

PowerShell kullanmıyorsanız, Craig620 tarafından önerilen WMI sorgusunu doğrudan komut satırından da çalıştırabilirsiniz :

> wmic COMPUTERSYSTEM GET BootupState

BootupState
Normal boot

1

HKLM \ SYSTEM \ CurrentControlSet \ Control \ SystemStartOptions bir dize içerir ve güvenli modda iseniz "SAFEBOOT: ???" dize içinde nerede ??? MINIMAL veya NETWORK. Bu, her önyüklemede güncellenir.

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.