 鲜花( 3)  鸡蛋( 1)
|
方法一:NetSH大法~7 [( v4 c9 X0 F- ~
采用下列Netsh脚本$ z3 p! K( i F) W# c/ f
interface7 G h: ?3 _: h/ k6 o4 e
set interface name="Local Area Connection" admin=ENABLED/DISABLED
X9 H7 h# X: {. o; j- |
3 A; V$ Q9 }! P y6 z方法二:Powershell+WMI大法2 q# `) x4 H* z4 W" A3 t6 g
$adapter = get-wmiobject Win32_NetworkAdapter -filter "NetConnectionID='Local Area Connection'"
& k' K4 P: w4 [: [$adapter.Disable()
4 `/ o2 P& g, X6 b
, U/ }6 V; G% L4 t; t+ _# h同理可以VBS+WMI大法~! O7 k7 Z" v8 ]9 d
这个就不说了~没啥意义了~
" O7 V. p# L8 \1 P2 J
- P9 C4 V8 y. F) \. @& P' I其中有一个非常重要的问题就是权限控制问题!/ O1 y, c, X, N' u/ P
Windows 7的UAC很严格,不能像WinXP里那样随意修改系统设置而不通知用户。) b* e' J5 m N3 |3 U7 {
如果不赋予脚本执行环境以Administrative权限的话,脚本会执行失败,WMI返回码为05,Netsh报错:“An interface with this name is not registered with the router.”) t, a) u# y( d
因此在启动Netsh或者Powershell时需要指定 Administrative权限,可通过右键菜单Run as Administrator实现。+ E) Y$ o$ {" E8 T; M6 c
然后会出现UAC,Allow即可~) U: W2 w# P' H6 Q. ~6 M9 V ~
由于UAC权限具有继承性,即一个具有Administrative权限的Process启动的Process默认是具有Administrative权限的(除非显式的禁止继承)~! Z" C* i9 M$ y( X
因此可以通过启动一个有Administrative的Cmd或者Powershell的Shell来让脚本具有Administrative权限~
' u6 _! `+ j/ D; L8 x& R. e# L, O8 k9 Q" P5 r; G5 v
该方法仅在Win7下测试通过~WinXP下不通过~
' i4 o5 F3 R; f3 E) }似乎原因是由于WinXP的WMI Class不支持Enable和Disable方法造成的~具体解决方案未知。 |
|