 鲜花( 3)  鸡蛋( 1)
|
方法一:NetSH大法~
& l' X: _4 {# y3 o3 J5 }采用下列Netsh脚本
( b6 D* ?/ r" S" S2 Ninterface
. g3 v7 O+ |' Y6 N8 jset interface name="Local Area Connection" admin=ENABLED/DISABLED
8 a7 p) h3 n1 ^0 c; A- ?4 a0 V# R% _" v' D9 O, ?1 q8 }' k
方法二:Powershell+WMI大法
* {5 U. t) v5 Z, x" m7 r$adapter = get-wmiobject Win32_NetworkAdapter -filter "NetConnectionID='Local Area Connection'"8 g, M [: c8 e( @( o( k
$adapter.Disable()8 _2 J0 Y4 l/ j: f0 i0 a% B5 n# w; B
9 ]) ~- }$ T! B$ j8 h7 V+ o5 U/ M同理可以VBS+WMI大法~
) G9 k7 m( @- i* @这个就不说了~没啥意义了~! H6 r z/ b0 i3 S
" j; T. |" B1 z) B
其中有一个非常重要的问题就是权限控制问题!
+ O4 J" ?; l ?% `" m8 l+ S, TWindows 7的UAC很严格,不能像WinXP里那样随意修改系统设置而不通知用户。
) s5 \& H( |5 F$ R; I如果不赋予脚本执行环境以Administrative权限的话,脚本会执行失败,WMI返回码为05,Netsh报错:“An interface with this name is not registered with the router.”
. D: z+ T# w+ g& U8 R' u. ?2 Z因此在启动Netsh或者Powershell时需要指定 Administrative权限,可通过右键菜单Run as Administrator实现。
% }& F4 G& G& G f然后会出现UAC,Allow即可~
# r0 m, L9 ?1 T; E* b( Z# y由于UAC权限具有继承性,即一个具有Administrative权限的Process启动的Process默认是具有Administrative权限的(除非显式的禁止继承)~
4 z% \# p% S, t- E% P' y因此可以通过启动一个有Administrative的Cmd或者Powershell的Shell来让脚本具有Administrative权限~& m- {; `% O' u; O# W+ w
6 l# S4 c, P" @6 W: w
该方法仅在Win7下测试通过~WinXP下不通过~+ z# u4 A+ i7 E5 \
似乎原因是由于WinXP的WMI Class不支持Enable和Disable方法造成的~具体解决方案未知。 |
|