2009-03-25 18 views
5

यदि Windows अद्यतन सक्षम है तो .NET से जांचने का कोई तरीका है?यदि Windows अद्यतन सक्षम है तो .NET से जांचें

मैं उपयोगकर्ताओं को हर बार अपने ऐप में लॉग इन करना चाहता हूं कि उनके कंप्यूटर को जोखिम हो सकता है और उन्हें विंडोज अपडेट वेबसाइट (या नियंत्रण कक्ष से विंडोज अपडेट एप्लिकेशन) के लिए एक लिंक दे सकता है।

अधिमानतः इसे XP, Vista और Windows 7 पर काम करना चाहिए। शायद एक रजिस्ट्री कुंजी या एक एपीआई बेहतर है?

उत्तर

8

पहले WUApiLib के लिए एक संदर्भ जोड़ने "C: \ Windows \ System32 \ Wuapi.dll"

तो आप इस कोड का उपयोग कर सकते हैं।

WUApiLib.AutomaticUpdatesClass auc = new WUApiLib.AutomaticUpdatesClass(); 
bool active = auc.ServiceEnabled; 

MSDN: "ServiceEnabled संपत्ति इंगित करता है कि सभी घटक है कि स्वचालित अद्यतन की आवश्यकता है उपलब्ध हैं।"

सेटिंग auc.Settings.NotificationLevel में वर्तमान मोड के बारे में जानकारी शामिल है। http://msdn.microsoft.com/en-us/library/aa385806(VS.85).aspx

+0

मुझे इस त्रुटि को संदर्भित करने के बाद आपकी कोशिश करते समय Windows 7 x64 Ultimate पर यह त्रुटि प्राप्त होती है। प्रकार WUApiLib.AutomaticUpdatesClass में परिभाषित कोई रचनाकार नहीं है कृपया मदद करें। धन्यवाद –

3

मैं तुम्हें Windows Update Agent API.

का उपयोग कर विशेष जानकारी के लिए IAutomaticUpdates देखें करके ऐसा कर सकते विश्वास करते हैं।

2

आप निम्न रजिस्ट्री कुंजी देख सकते हैं।

HKEY_LOCAL_MACHINE 
    SOFTWARE 
    Microsoft 
    Active Setup 
     Installed Components 
     {89820200-ECBD-11cf-8B85-00AA005B4340} 

यदि इसका Isstalled मान 1 है तो Windows अद्यतन स्थापित है। इस सवाल का

http://windowsitpro.com/article/articleid/15266/how-can-i-detect-if-windows-update-is-installed-on-a-machine.html

मैं वास्तव में another answer की तरह वास्तव में, लेकिन दुर्भाग्य से, यह केवल XP SP3 पर समर्थित है, संभव नहीं हो सकता है:

इस से लिया गया है।

+0

इसे स्थापित किया जा सकता है और मोड में "अक्षम" ... –

1

वैकल्पिक रूप से आप यह देखने के लिए जांच सकते हैं कि Windows अद्यतन सेवा PROCESS ऑब्जेक्ट्स का उपयोग कर चल रही है या नहीं। इन पंक्तियों के साथ

कुछ:

Function CheckIfServiceIsRunning(ByVal serviceName As String) As Boolean 
    Dim mySC As ServiceProcess.ServiceController 
    mySC = New ServiceProcess.ServiceController(serviceName) 
    If mySC.Status = ServiceProcess.ServiceControllerStatus.Stopped Then 
     ' Service isn't running 
     Return False 
    ElseIf mySC.Status = ServiceProcess.ServiceControllerStatus.Running Then 
     ' Service already running 
     Return True 
    End If 
End Function 

यदि स्मृति में कार्य करता है, लागू सेवा "wuauserv"

5
बेशक

नाम है यह है कि ऐसा करने के लिए अपनी पसंद लेकिन हर कुछ मिनटों कि WindowsUpdate था के लिए प्रेरित किया जा रहा है XP में अब तक का सबसे खराब उपयोगिता मुद्दा बंद हो गया था।

आप अपने उपयोगकर्ताओं को परेशान नहीं करना चाहते हैं। आपको उन्हें प्यार करना चाहिए। और निश्चित रूप से अपने निजी मामलों में घुसपैठ नहीं करते हैं जैसे कि डब्ल्यूयू बंद है या नहीं, क्योंकि ईमानदारी से यह आपका कोई व्यवसाय नहीं है।

+1

कौन जानता था कि एसओ बेकार जैसे नाम से कोई ऐसी आवाज सलाह प्रदान करेगा? +1 – BFree

+0

धन्यवाद। मैंने अभी कुछ रिब्रांडिंग की है। – User

0

माइकल Piendl का जवाब मेरे लिए काम नहीं किया था, लेकिन यह मुझे जानकारी मैं बनाने के लिए आवश्यक दे दी है यह काम:

WUApiLib.AutomaticUpdatesClass auc = new WUApiLib.AutomaticUpdatesClass();<br> 
string notificationLevel = auc.Settings.NotificationLevel.ToString();<br><br> 

notificationLevel स्ट्रिंग क्या विकल्प से चुना जाता है के आधार पर अलग अलग चीजें बराबर होगा "स्वचालित अपडेट" संवाद।

संबंधित मुद्दे