 鲜花( 3)  鸡蛋( 1)
|
方法一:NetSH大法~# U- I6 L& W: D* H+ ]
采用下列Netsh脚本8 q3 l3 j' G6 T7 P* ?6 N9 C: Z, S
interface: q( X# I: v7 _/ f- U, p) z6 J4 V
set interface name="Local Area Connection" admin=ENABLED/DISABLED) ?! Q, z3 k# ^! U
6 {4 y F, R% i0 k7 A7 o方法二:Powershell+WMI大法9 H! A, k0 y" t$ C4 m3 D/ w
$adapter = get-wmiobject Win32_NetworkAdapter -filter "NetConnectionID='Local Area Connection'"$ O/ Y* Q' t1 [1 Z. R
$adapter.Disable()# q. P( K3 i z: i9 t- y6 S( H
5 `& V9 A6 ~ i9 K ]
同理可以VBS+WMI大法~
, j9 y6 B2 S3 y6 ]0 }: [这个就不说了~没啥意义了~' {3 ^1 w# O5 r) q# f
6 |' n: x/ i+ n6 O, ]; i其中有一个非常重要的问题就是权限控制问题!
% p3 P) L0 f5 h. f9 g/ ~% M: ]7 e# }. q" u' qWindows 7的UAC很严格,不能像WinXP里那样随意修改系统设置而不通知用户。: L+ Z6 N& _8 z3 g
如果不赋予脚本执行环境以Administrative权限的话,脚本会执行失败,WMI返回码为05,Netsh报错:“An interface with this name is not registered with the router.”
) ~7 Y( F$ f9 `( |- G因此在启动Netsh或者Powershell时需要指定 Administrative权限,可通过右键菜单Run as Administrator实现。
6 Z+ h l7 J) }( N3 M, u5 |1 R然后会出现UAC,Allow即可~
. y# y9 e2 ?9 M1 w" U7 L/ P由于UAC权限具有继承性,即一个具有Administrative权限的Process启动的Process默认是具有Administrative权限的(除非显式的禁止继承)~1 P/ s4 z* N; a9 i
因此可以通过启动一个有Administrative的Cmd或者Powershell的Shell来让脚本具有Administrative权限~
! b% d/ G! e% K+ c
' l% L/ U- j: z6 Z& }" M该方法仅在Win7下测试通过~WinXP下不通过~7 n i4 \2 u7 t9 G4 V$ e. N6 @' w
似乎原因是由于WinXP的WMI Class不支持Enable和Disable方法造成的~具体解决方案未知。 |
|