 鲜花( 3)  鸡蛋( 1)
|
方法一:NetSH大法~2 o; l- z, ]9 x" P% \
采用下列Netsh脚本; e2 u0 x, X* |" S. s
interface
& n& K5 Q/ U) z4 Fset interface name="Local Area Connection" admin=ENABLED/DISABLED+ o8 q) D3 L j$ I4 C
6 n7 Z* z4 k0 B: g+ {0 ?, \
方法二:Powershell+WMI大法
( Z2 x& n1 Q* e( u# w9 i% s( G7 X$adapter = get-wmiobject Win32_NetworkAdapter -filter "NetConnectionID='Local Area Connection'"9 S7 e/ q H* J2 I; O% r8 f' ?
$adapter.Disable()% w4 o6 _) w- t, i F$ ^
! k+ _9 N; \( X; z: Q/ J$ e同理可以VBS+WMI大法~4 f, \4 q+ U: m+ G% l2 a- [
这个就不说了~没啥意义了~
4 ]4 i6 Y5 y: U, W$ ?# {2 W* n
) ^' K# a3 [$ {$ S0 n7 x其中有一个非常重要的问题就是权限控制问题!
F# [6 Y7 z' B9 m8 ?; D. Z0 X- WWindows 7的UAC很严格,不能像WinXP里那样随意修改系统设置而不通知用户。& M! F6 W- a7 b! E+ I
如果不赋予脚本执行环境以Administrative权限的话,脚本会执行失败,WMI返回码为05,Netsh报错:“An interface with this name is not registered with the router.”3 t" `: J( X' b$ V
因此在启动Netsh或者Powershell时需要指定 Administrative权限,可通过右键菜单Run as Administrator实现。& j+ B% C) z/ L
然后会出现UAC,Allow即可~
3 h2 V, [$ |% h' R; R* ~, T% E由于UAC权限具有继承性,即一个具有Administrative权限的Process启动的Process默认是具有Administrative权限的(除非显式的禁止继承)~
& ^* w, m- `6 s9 j, @' s& [3 H因此可以通过启动一个有Administrative的Cmd或者Powershell的Shell来让脚本具有Administrative权限~7 \/ K1 |0 h4 y* T& d/ N
' A6 V$ B: i0 @
该方法仅在Win7下测试通过~WinXP下不通过~ m3 _5 S# ]6 g3 j* W
似乎原因是由于WinXP的WMI Class不支持Enable和Disable方法造成的~具体解决方案未知。 |
|