 鲜花( 3)  鸡蛋( 1)
|
方法一:NetSH大法~% ]4 n# k4 _0 `5 {- D* A# i
采用下列Netsh脚本; h \5 d1 ~1 |7 X' }+ u. }/ ^
interface, [' _ E4 M( T6 z* X! E
set interface name="Local Area Connection" admin=ENABLED/DISABLED1 u1 Y" z1 t1 I$ f
, O2 u7 H( d% h9 i方法二:Powershell+WMI大法5 b. h* J7 X. s
$adapter = get-wmiobject Win32_NetworkAdapter -filter "NetConnectionID='Local Area Connection'"
3 ~- a& p# `9 [# U& u$adapter.Disable()4 a `/ z8 B8 a, P' x
- S4 `/ `; Y4 V同理可以VBS+WMI大法~! l& g2 B5 x9 g8 j
这个就不说了~没啥意义了~0 M! n0 \& Q+ ~# D O& y2 g0 D9 Y# J/ W
* ]+ j* B/ t4 i其中有一个非常重要的问题就是权限控制问题!& M% ^% _! n. {7 [" i0 l, i
Windows 7的UAC很严格,不能像WinXP里那样随意修改系统设置而不通知用户。) | E, |; |8 Q
如果不赋予脚本执行环境以Administrative权限的话,脚本会执行失败,WMI返回码为05,Netsh报错:“An interface with this name is not registered with the router.”
5 q9 l4 M/ \- N4 Q% @! }因此在启动Netsh或者Powershell时需要指定 Administrative权限,可通过右键菜单Run as Administrator实现。+ Q8 T. j& G$ {0 [) u
然后会出现UAC,Allow即可~
7 W/ l) m( u7 `/ r) e5 `" o5 P4 x由于UAC权限具有继承性,即一个具有Administrative权限的Process启动的Process默认是具有Administrative权限的(除非显式的禁止继承)~; L$ l& b% I. v+ X
因此可以通过启动一个有Administrative的Cmd或者Powershell的Shell来让脚本具有Administrative权限~; Q3 g: d4 d# j
3 @5 _5 y8 y9 z, Q7 y8 K/ q% O0 @
该方法仅在Win7下测试通过~WinXP下不通过~
& P( ]8 r( w3 U9 g A5 X似乎原因是由于WinXP的WMI Class不支持Enable和Disable方法造成的~具体解决方案未知。 |
|