用vbs实现本地连接禁用/启用脚本代码

(编辑:jimmy 日期: 2024/12/23 浏览:2)

转载至 http://community.csdn.net/Expert/topic/4881/4881882.xml

复制代码 代码如下:
Const ssfCONTROLS = 3 

sConnectionName = "本地连接"  '可改成需要控制的连接名称,如"无线网络连接"等 

sEnableVerb = "启用(&A)" 
sDisableVerb = "禁用(&B)"   'XP系统中应为 "停用(&B)" 

set shellApp = createobject("shell.application") 
set oControlPanel = shellApp.Namespace(ssfCONTROLS) 

set oNetConnections = nothing 
for each folderitem in oControlPanel.items 
 if folderitem.name  = "网络连接" then 
   set oNetConnections = folderitem.getfolder: exit for 
 end if 
next 

if oNetConnections is nothing then 
 msgbox "未找到网络连接文件夹" 
 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 "未找到 '" & 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 400