2008-09-17 9 views
11

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

उत्तर

9

netsh इंटरफ़ेस प्रयोग सेट इंटरफ़ेस का उपयोग करना [नाम =] IfName [[व्यवस्थापक =] सक्षम | विकलांग [कनेक्ट =] कनेक्ट | काट दिया [NewName =] NewName] सब कुछ शामिल है

कोशिश अंदर बाहरी कोष्ठक: netsh इंटरफ़ेस सेट इंटरफ़ेस नाम = "thename" व्यवस्थापक = विकलांग कनेक्ट = काट दिया NewName = "thename"

भी देखें इस एमएस KB पेज: http://support.microsoft.com/kb/262265/ आप अपने सुझाव में से किसी का पालन कर सकते हैं। एडाप्टर को अक्षम करने के लिए, आपको हार्डवेयर डिवाइस का संदर्भ देने का एक तरीका निर्धारित करना होगा। यदि कंप्यूटर पर एक ही नाम के साथ कई एडेप्टर नहीं होंगे, तो आप इंटरफ़ेस के लिए विवरण से बाहर निकल सकते हैं (या पीसीआई आईडी अच्छी तरह से काम करता है)। उसके बाद, devcon (अक्षम | सक्षम) का उपयोग कर। डिवाइस प्रबंधक के लिए डेवॉन एक ऐड-ऑन कंसोल इंटरफ़ेस है।

+1

सभी विकल्पों सहित निम्नलिखित संदेश उत्पन्न करता है: "समर्पित इंटरफेस को कनेक्ट, डिस्कनेक्ट, सक्षम या अक्षम नहीं किया जा सकता है।" यह काम करना चाहिए, लेकिन यह नहीं है। हालांकि, किसी अन्य कंप्यूटर पर परीक्षण नहीं किया है; मे लूँगा। धन्यवाद। – tzot

+0

मुझे एक ही अजीब समस्या मिलती है। इस विंडोज एक्सपी सिस्टम पर नेटेश इरादे के रूप में काम नहीं कर रहा है, मैं इसे करने की कोशिश कर रहा हूं। –

+1

क्या आपने 'समर्पित इंटरफेस नहीं कर सकते ...' त्रुटि के लिए कामकाज पाया है? – scape

0

devcon उपकरण एनआईसी को नियंत्रित कर सकता है, लेकिन इंटरफ़ेस सीधे नहीं। यह डिवाइस मैनेजर एप्लेट का कमांड लाइन संस्करण है।

devcon disable (id or portion of name) 
devcon enable (id or portion of name) 
+0

यह नेटवर्क इंटरफेस के साथ काम नहीं कर रहा है। "devcon wifi सक्षम करें", जहां वाईफाई वायरलेस इंटरफ़ेस उत्तरों का नाम है: "कोई डिवाइस सक्षम नहीं है।" – tzot

0
इस

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

+0

मैंने पिछले सभी संयोजनों में कोशिश की है जो नेट्स सुझाव देते हैं: 'नेटस् इंटरफ़ेस सेट इंटरफ़ेस [name =] wifi [admin =] अक्षम" या तो "पैरामीटर गलत है" या "एक या अधिक आवश्यक पैरामीटर गलत है" संदेश। – tzot

+0

wmi xp –

1

मैं MSDN पर इंटरफेस को नियंत्रित करने के लिए किसी भी बुनियादी एपीआई को खोजने के लिए, के अलावा रास एपीआई से नहीं कर पा रहे हैं, लेकिन मुझे नहीं लगता कि वे गैर डायलअप कनेक्शन के लिए आवेदन कर सकते हैं। जैसा कि आप स्वयं सुझाव देते हैं, माना जाता है कि यह एक प्रोग्रामेटिक इंटरफ़ेस भी है: माना जाता है कि इसमें एक प्रोग्रामैटिक इंटरफ़ेस भी है: http://msdn.microsoft.com/en-us/library/ms708353(VS.85).aspx

यदि आप शुद्ध पायथन होना चाहते हैं, तो आप शायद नेटस् प्रक्रिया के साथ संवाद करने के लिए पाइप का एक सेट खोल सकते हैं।

0

आपको डब्लूएमआई का उपयोग करने की आवश्यकता हो सकती है। यह एक अच्छा प्रारंभिक बिंदु के रूप में सेवा कर सकते हैं: http://msdn.microsoft.com/en-us/library/aa394595.aspx

+0

पर काम नहीं करता है यह वास्तव में एक अच्छा प्रारंभिक बिंदु है। मैं इस पर काम कर रहा हूँ। धन्यवाद। – tzot

6

अब तक मैं निम्नलिखित पायथन समाधान मिल गया है:

>>> import wmi; c=wmi.WMI() 
>>> o=c.query("select * from Win32_NetworkAdapter where NetConnectionID='wifi'")[0] 
>>> o.EnableDevice(1) 
(-2147217407,) 

जो अनुवाद किया है, AFAIU, सामान्य WMI त्रुटि 0x80041001 करने के लिए। अनुमति हो सकती है।

+0

स्पष्ट रूप से मैं इसे स्थानीय व्यवस्थापक समूह के सदस्य के रूप में चला रहा हूं, और कंप्यूटर किसी डोमेन का हिस्सा नहीं है। – tzot

+0

ट्रेसबैक (सबसे हालिया कॉल अंतिम): फ़ाइल "सी: \ पायथन 33 \ lib \ साइट-पैकेज \ wmi.py", लाइन 416, __call__ परिणाम = self.ole_object.ExecMethod_ (self.method.Name) फ़ाइल ">", लाइन 3, ExecMethod_ pywintypes.com_error: (-2147352567, 'अपवाद हुआ।', (0, 'SWbemObjectEx', 'अमान्य विधि पैरामीटर', कोई नहीं, 0, -2147217361), कोई नहीं) –

+0

@ हैफेंगली: धन्यवाद, लेकिन मैं अब विंडोज नहीं करता हूं, और न ही ऊपर दिए गए कोड का परीक्षण पायथन 3 (उत्तर की तारीख पर ध्यान दें) पर किया गया था। – tzot

2

मुझे यह इंटरनेट पर। वीबीएस स्क्रिप्ट मिला। वास्तव में मशीनों पर काम करने का यह अच्छा फायदा है जहां मुझे इस उद्देश्य के लिए काम करने के लिए नेट्सएच नहीं मिल सकता है।

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