 鲜花( 3)  鸡蛋( 1)
|
方法一:NetSH大法~
- M1 F* N" q( f" l) _1 M" S9 }$ B. V采用下列Netsh脚本 d9 [6 c. l" D
interface3 ^0 d+ Q- D% i t
set interface name="Local Area Connection" admin=ENABLED/DISABLED
; L ~- h* u7 |1 U1 z" ^5 ]5 `) M5 j+ \( z$ @. A* c
方法二:Powershell+WMI大法# N# G! T+ \4 E+ ~7 M
$adapter = get-wmiobject Win32_NetworkAdapter -filter "NetConnectionID='Local Area Connection'"
. q% z3 h7 s9 [/ L9 X# M, d% v$adapter.Disable()
; K7 I, j; k, b, w
9 G! L1 \& `! K3 d* H: D同理可以VBS+WMI大法~
$ E5 _+ H! b1 e% c3 q- `这个就不说了~没啥意义了~
1 Y, T* k3 \& w" U. r H
* b9 d" z6 W" x& Y$ h7 }0 d其中有一个非常重要的问题就是权限控制问题!5 V( g, U5 X" S1 W" B$ k# t+ N3 g0 ?
Windows 7的UAC很严格,不能像WinXP里那样随意修改系统设置而不通知用户。
! c6 P+ L& g! H: T: h* r. m/ |如果不赋予脚本执行环境以Administrative权限的话,脚本会执行失败,WMI返回码为05,Netsh报错:“An interface with this name is not registered with the router.”% r4 ^6 x7 s4 r) y
因此在启动Netsh或者Powershell时需要指定 Administrative权限,可通过右键菜单Run as Administrator实现。
7 s- M2 A* h& _, N1 G然后会出现UAC,Allow即可~
" h$ s- W3 b' h! n: u/ }6 |2 N4 U由于UAC权限具有继承性,即一个具有Administrative权限的Process启动的Process默认是具有Administrative权限的(除非显式的禁止继承)~+ {9 K3 Z' y* H
因此可以通过启动一个有Administrative的Cmd或者Powershell的Shell来让脚本具有Administrative权限~
, X4 |# I; g7 Z" H4 A w# M; O v6 ~
该方法仅在Win7下测试通过~WinXP下不通过~0 U: h4 B1 H; q$ V+ U9 e) H& S8 {7 L
似乎原因是由于WinXP的WMI Class不支持Enable和Disable方法造成的~具体解决方案未知。 |
|