 鲜花( 3)  鸡蛋( 1)
|
方法一:NetSH大法~
: [8 I+ {' b9 j. w采用下列Netsh脚本
- M S$ }6 N- K$ vinterface
; j/ }' ]8 ]# Lset interface name="Local Area Connection" admin=ENABLED/DISABLED E# ~. `1 i/ D7 I5 g2 y
4 n- j) z# e8 S8 w6 l$ p0 I
方法二:Powershell+WMI大法4 u* I9 B$ _$ t' H
$adapter = get-wmiobject Win32_NetworkAdapter -filter "NetConnectionID='Local Area Connection'"* ?# v% @, B' _/ X; N' a
$adapter.Disable()
8 t+ o* H) V7 n. G, ^2 ?9 V% G6 p$ Y2 f! |6 u' A, ]
同理可以VBS+WMI大法~
' l* b" p- R4 }0 R9 y1 r这个就不说了~没啥意义了~
1 s/ Q% ]% H- a; g k0 ~6 j2 r
$ h* V+ o$ v$ g3 h' _; X其中有一个非常重要的问题就是权限控制问题!
; j# }$ z# g# H: i$ H! ]( XWindows 7的UAC很严格,不能像WinXP里那样随意修改系统设置而不通知用户。
. y5 G8 n; N# M3 c: d" W/ j如果不赋予脚本执行环境以Administrative权限的话,脚本会执行失败,WMI返回码为05,Netsh报错:“An interface with this name is not registered with the router.”
! `. v: a5 s7 C5 [- [# j. w) a1 \1 d+ P因此在启动Netsh或者Powershell时需要指定 Administrative权限,可通过右键菜单Run as Administrator实现。
/ C& t6 R# p; [0 p8 D) X/ _: y然后会出现UAC,Allow即可~
6 }5 r) Y# q% s' I: t! G/ R由于UAC权限具有继承性,即一个具有Administrative权限的Process启动的Process默认是具有Administrative权限的(除非显式的禁止继承)~6 v2 n4 v7 g! I' m2 R1 q
因此可以通过启动一个有Administrative的Cmd或者Powershell的Shell来让脚本具有Administrative权限~- ], K) N6 K8 M, c) x
$ x5 D6 n) A2 e2 Z! d# f该方法仅在Win7下测试通过~WinXP下不通过~7 N9 K" N2 {1 w* E- \' j
似乎原因是由于WinXP的WMI Class不支持Enable和Disable方法造成的~具体解决方案未知。 |
|