Win10 में उपयोगकर्ताओं के लिए NO लॉग के लिए परीक्षण कैसे करें


0

जब कोई उपयोगकर्ता लॉग इन होता है, तो वे आसानी से सभी उपयोगकर्ताओं को लॉग इन करने के लिए quser.exe का उपयोग कर सकते हैं।

मैं कई बार एक निर्धारित कार्य (सिस्टम के रूप में चलाना) चलाना चाहता हूं, और स्क्रिप्ट में एक फ़ंक्शन में कुछ ऐसा करने की क्षमता है जो रिबूट को किक कर सकता है। इस प्रकार, इससे पहले कि फ़ंक्शन चलता है, मुझे पहले यह जांचने की आवश्यकता है कि कोई उपयोगकर्ता लॉग इन है या नहीं।

Win7 में, मैं के उत्पादन की जाँच कर रहा हूँ:

quser.exe 2>&1

"कोई उपयोगकर्ता मौजूद नहीं है" स्ट्रिंग के लिए, और यह बहुत अच्छा काम करता है। हालांकि यह Win10 में काम नहीं कर रहा है।

Win10 में उसी कमांड का आउटपुट जब कोई लॉग इन नहीं होता है तो खाली / खाली दिखाई देता है। खाली मान एक जोखिम भरी चीज की तरह लगता है, जिसके खिलाफ परीक्षण किया जा सकता है क्योंकि एक अनपेक्षित रिबूट का अनुभव करने वाले उपयोगकर्ता के लिए एक खाली स्ट्रिंग के लिए कई संभावित त्रुटि स्रोत हैं। मैं उपयोगकर्ता को चेतावनी देने के लिए एक अधिसूचना और उलटी गिनती का उपयोग नहीं कर सकता

क्या यह सत्यापित करने का कोई अन्य (स्वचालित, स्पष्ट) तरीका है कि वर्तमान में कोई उपयोगकर्ता लॉग इन नहीं है?


आप मशीन चलाने वाली प्रक्रियाओं की एक सूची प्राप्त कर सकते हैं और हर एक के स्वयं के उपयोगकर्ता नाम को देख सकते हैं, जिन्हें सिस्टम, सेवाओं, आदि के स्वामित्व वाले को छोड़कर, हालांकि बहुत सुरुचिपूर्ण नहीं है ...
ट्विस्टी इंपर्सनेटर

आप क्लाइंट कंप्यूटर पर PsLoggedOn स्थापित कर सकते हैं? docs.microsoft.com/en-us/sysinternals/downloads/psloggedon
Neelix

कुछ पर, शायद, लेकिन आम तौर पर, नहीं। मैं एक अंतर्निहित विधि खोजने की कोशिश कर रहा हूं।
टेककोल्डगेडिस्ट

जवाबों:


0

उपयोग quser(यानी क्वेरी उपयोगकर्ता) और एक वैध, खाली रिटर्न पर निर्भर होने के बजाय, एक बेहतर समाधान के साथ लगता है qwinsta(यानी क्वेरी सत्र)।

मूल रूप से, सभी सत्रों के लिए क्वेरी, और उपयोगकर्ता नामों के लिए रिटर्न पार्स करें। सेवाओं या सिस्टम के अंतर्गत चलने वाले सत्रों में उपयोगकर्ता नाम नहीं है। तो PowerShell में:

$qwinstaOut = & "$env:windir\system32\QWinSta.exe"
if (-not $qwinstaOut) {
   $UserSessions = "unknown"
} else {
   $UserSessions = $qwinstaOut[1..($qwinstaOut.count-1)] | % {$_.substring(19)} | ? {$_ -match "^\w"}
}
# If there are no sessions with a username, this must be running as SYSTEM
if (-not $UserSessions) {
...

यदि चर $userSessionsरिक्त है, तो कोई उपयोगकर्ता लॉग इन नहीं है। यदि यह रिक्त नहीं है, तो या तो उपयोगकर्ता लॉग इन हैं या कोई त्रुटि थी। न सही, लेकिन सुरक्षित।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.