 鲜花( 3)  鸡蛋( 1)
|
方法一:NetSH大法~% m% W; A! Z' i8 T. ?( x+ d
采用下列Netsh脚本
4 L! @0 y5 N3 l" ]) L( C# ~interface" v. r3 g! M2 F. A( T. g
set interface name="Local Area Connection" admin=ENABLED/DISABLED4 q, V) R" v( g7 w# x0 L; W( L& e
5 @3 n0 D( c9 Y$ |5 w
方法二:Powershell+WMI大法
6 W; F" i0 Y5 _9 [- u, n$adapter = get-wmiobject Win32_NetworkAdapter -filter "NetConnectionID='Local Area Connection'"$ s! x9 o4 e1 q+ l/ f( W
$adapter.Disable()2 E# N' r) J0 t4 M+ g
; y4 e2 k4 U) D# k$ s- a3 M+ M- [同理可以VBS+WMI大法~
% O1 o- o6 f$ T% v这个就不说了~没啥意义了~
) ?# N; H3 [9 }5 B" T* B6 C5 M7 @2 E
其中有一个非常重要的问题就是权限控制问题!
! c9 r0 J2 d( V& L4 MWindows 7的UAC很严格,不能像WinXP里那样随意修改系统设置而不通知用户。) E0 c6 c/ m' ^" B0 n. g
如果不赋予脚本执行环境以Administrative权限的话,脚本会执行失败,WMI返回码为05,Netsh报错:“An interface with this name is not registered with the router.”
/ B, M, n2 B- m3 l) S) H因此在启动Netsh或者Powershell时需要指定 Administrative权限,可通过右键菜单Run as Administrator实现。
8 l8 g& W6 t! k9 P% n然后会出现UAC,Allow即可~
% w, A$ D* n0 \; T由于UAC权限具有继承性,即一个具有Administrative权限的Process启动的Process默认是具有Administrative权限的(除非显式的禁止继承)~
* R$ o* p" v- U; p1 \因此可以通过启动一个有Administrative的Cmd或者Powershell的Shell来让脚本具有Administrative权限~
% D/ a$ p5 J) ?- A3 c n4 H2 w% R( Q( N
该方法仅在Win7下测试通过~WinXP下不通过~3 o$ o3 y+ y/ L" N4 `5 T7 H
似乎原因是由于WinXP的WMI Class不支持Enable和Disable方法造成的~具体解决方案未知。 |
|