मुझे विंडोज एक्सपी में एक स्क्रिप्ट से पूरी तरह से नेटवर्क इंटरफेस को सक्षम/अक्षम करने की आवश्यकता है। मैं एक अजगर समाधान की तलाश में हूं, लेकिन किसी भी सामान्य तरीके (जैसे डब्लूएमआई, कुछ कमांड लाइन ला ला नेटेश, कुछ विंडोज़ कॉल) का स्वागत है और समायोजित किया जाएगा। धन्यवाद।नेटवर्क इंटरफेस को प्रोग्रामेटिक रूप से सक्षम/अक्षम कैसे करें? (विंडोज एक्सपी)
उत्तर
netsh इंटरफ़ेस प्रयोग सेट इंटरफ़ेस का उपयोग करना [नाम =] IfName [[व्यवस्थापक =] सक्षम | विकलांग [कनेक्ट =] कनेक्ट | काट दिया [NewName =] NewName] सब कुछ शामिल है
कोशिश अंदर बाहरी कोष्ठक: netsh इंटरफ़ेस सेट इंटरफ़ेस नाम = "thename" व्यवस्थापक = विकलांग कनेक्ट = काट दिया NewName = "thename"
भी देखें इस एमएस KB पेज: http://support.microsoft.com/kb/262265/ आप अपने सुझाव में से किसी का पालन कर सकते हैं। एडाप्टर को अक्षम करने के लिए, आपको हार्डवेयर डिवाइस का संदर्भ देने का एक तरीका निर्धारित करना होगा। यदि कंप्यूटर पर एक ही नाम के साथ कई एडेप्टर नहीं होंगे, तो आप इंटरफ़ेस के लिए विवरण से बाहर निकल सकते हैं (या पीसीआई आईडी अच्छी तरह से काम करता है)। उसके बाद, devcon (अक्षम | सक्षम) का उपयोग कर। डिवाइस प्रबंधक के लिए डेवॉन एक ऐड-ऑन कंसोल इंटरफ़ेस है।
devcon उपकरण एनआईसी को नियंत्रित कर सकता है, लेकिन इंटरफ़ेस सीधे नहीं। यह डिवाइस मैनेजर एप्लेट का कमांड लाइन संस्करण है।
devcon disable (id or portion of name)
devcon enable (id or portion of name)
यह नेटवर्क इंटरफेस के साथ काम नहीं कर रहा है। "devcon wifi सक्षम करें", जहां वाईफाई वायरलेस इंटरफ़ेस उत्तरों का नाम है: "कोई डिवाइस सक्षम नहीं है।" – tzot
VB.Net
Dim objectQuery As New ObjectQuery("SELECT * FROM Win32_NetworkAdapter WHERE NetConnectionId IS NOT NULL")
Dim searcher As New ManagementObjectSearcher(scope, objectQuery)
Dim os As ManagementObject
Dim moColl As ManagementObjectCollection = searcher.Get()
Dim _list As String = ""
For Each os In moColl
Console.WriteLine(os("NetConnectionId"))
Next os
है कि आप कंप्यूटर पर सभी इंटरफेस मिल जाएगा है। फिर आप इसे अक्षम करने के लिए नेटस्च कर सकते हैं।
netsh interface set interface DISABLED
मैंने पिछले सभी संयोजनों में कोशिश की है जो नेट्स सुझाव देते हैं: 'नेटस् इंटरफ़ेस सेट इंटरफ़ेस [name =] wifi [admin =] अक्षम" या तो "पैरामीटर गलत है" या "एक या अधिक आवश्यक पैरामीटर गलत है" संदेश। – tzot
wmi xp –
मैं MSDN पर इंटरफेस को नियंत्रित करने के लिए किसी भी बुनियादी एपीआई को खोजने के लिए, के अलावा रास एपीआई से नहीं कर पा रहे हैं, लेकिन मुझे नहीं लगता कि वे गैर डायलअप कनेक्शन के लिए आवेदन कर सकते हैं। जैसा कि आप स्वयं सुझाव देते हैं, माना जाता है कि यह एक प्रोग्रामेटिक इंटरफ़ेस भी है: माना जाता है कि इसमें एक प्रोग्रामैटिक इंटरफ़ेस भी है: http://msdn.microsoft.com/en-us/library/ms708353(VS.85).aspx
यदि आप शुद्ध पायथन होना चाहते हैं, तो आप शायद नेटस् प्रक्रिया के साथ संवाद करने के लिए पाइप का एक सेट खोल सकते हैं।
आपको डब्लूएमआई का उपयोग करने की आवश्यकता हो सकती है। यह एक अच्छा प्रारंभिक बिंदु के रूप में सेवा कर सकते हैं: http://msdn.microsoft.com/en-us/library/aa394595.aspx
पर काम नहीं करता है यह वास्तव में एक अच्छा प्रारंभिक बिंदु है। मैं इस पर काम कर रहा हूँ। धन्यवाद। – tzot
अब तक मैं निम्नलिखित पायथन समाधान मिल गया है:
>>> import wmi; c=wmi.WMI()
>>> o=c.query("select * from Win32_NetworkAdapter where NetConnectionID='wifi'")[0]
>>> o.EnableDevice(1)
(-2147217407,)
जो अनुवाद किया है, AFAIU, सामान्य WMI त्रुटि 0x80041001 करने के लिए। अनुमति हो सकती है।
स्पष्ट रूप से मैं इसे स्थानीय व्यवस्थापक समूह के सदस्य के रूप में चला रहा हूं, और कंप्यूटर किसी डोमेन का हिस्सा नहीं है। – tzot
ट्रेसबैक (सबसे हालिया कॉल अंतिम): फ़ाइल "सी: \ पायथन 33 \ lib \ साइट-पैकेज \ wmi.py", लाइन 416, __call__ परिणाम = self.ole_object.ExecMethod_ (self.method.Name) फ़ाइल "
@ हैफेंगली: धन्यवाद, लेकिन मैं अब विंडोज नहीं करता हूं, और न ही ऊपर दिए गए कोड का परीक्षण पायथन 3 (उत्तर की तारीख पर ध्यान दें) पर किया गया था। – tzot
मुझे यह इंटरनेट पर। वीबीएस स्क्रिप्ट मिला। वास्तव में मशीनों पर काम करने का यह अच्छा फायदा है जहां मुझे इस उद्देश्य के लिए काम करने के लिए नेट्सएच नहीं मिल सकता है।
Const ssfCONTROLS = 3
sConnectionName = "Local Area Connection"
sEnableVerb = "En&able"
sDisableVerb = "Disa&ble"
set shellApp = createobject("shell.application")
set oControlPanel = shellApp.Namespace(ssfCONTROLS)
set oNetConnections = nothing
for each folderitem in oControlPanel.items
if folderitem.name = "Network Connections" then
set oNetConnections = folderitem.getfolder: exit for
end if
next
if oNetConnections is nothing then
msgbox "Couldn't find 'Network Connections' folder"
wscript.quit
end if
set oLanConnection = nothing
for each folderitem in oNetConnections.items
if lcase(folderitem.name) = lcase(sConnectionName) then
set oLanConnection = folderitem: exit for
end if
next
if oLanConnection is nothing then
msgbox "Couldn't find '" & sConnectionName & "' item"
wscript.quit
end if
bEnabled = true
set oEnableVerb = nothing
set oDisableVerb = nothing
s = "Verbs: " & vbcrlf
for each verb in oLanConnection.verbs
s = s & vbcrlf & verb.name
if verb.name = sEnableVerb then
set oEnableVerb = verb
bEnabled = false
end if
if verb.name = sDisableVerb then
set oDisableVerb = verb
end if
next
'debugging displays left just in case...
'
'msgbox s ': wscript.quit
'msgbox "Enabled: " & bEnabled ': wscript.quit
'not sure why, but invokeverb always seemed to work
'for enable but not disable.
'
'saving a reference to the appropriate verb object
'and calling the DoIt method always seems to work.
'
if bEnabled then
' oLanConnection.invokeverb sDisableVerb
oDisableVerb.DoIt
else
' oLanConnection.invokeverb sEnableVerb
oEnableVerb.DoIt
end if
'adjust the sleep duration below as needed...
'
'if you let the oLanConnection go out of scope
'and be destroyed too soon, the action of the verb
'may not take...
'
wscript.sleep 1000
सभी विकल्पों सहित निम्नलिखित संदेश उत्पन्न करता है: "समर्पित इंटरफेस को कनेक्ट, डिस्कनेक्ट, सक्षम या अक्षम नहीं किया जा सकता है।" यह काम करना चाहिए, लेकिन यह नहीं है। हालांकि, किसी अन्य कंप्यूटर पर परीक्षण नहीं किया है; मे लूँगा। धन्यवाद। – tzot
मुझे एक ही अजीब समस्या मिलती है। इस विंडोज एक्सपी सिस्टम पर नेटेश इरादे के रूप में काम नहीं कर रहा है, मैं इसे करने की कोशिश कर रहा हूं। –
क्या आपने 'समर्पित इंटरफेस नहीं कर सकते ...' त्रुटि के लिए कामकाज पाया है? – scape