 鲜花( 3)  鸡蛋( 1)
|
方法一:NetSH大法~5 j$ @ p4 J1 Q6 j: ?. b2 K* K
采用下列Netsh脚本
& r* X& T1 X# x6 s& u- `interface5 d8 ^- }- G0 O w+ @' {! ~& d+ I- c
set interface name="Local Area Connection" admin=ENABLED/DISABLED
Z8 i- x# X7 X+ N0 B( c" t' t6 w! G3 F/ z' d* U; |7 T
方法二:Powershell+WMI大法
9 ]. R) _* Q5 H$adapter = get-wmiobject Win32_NetworkAdapter -filter "NetConnectionID='Local Area Connection'"
3 y7 d( L' i! Y# b1 A5 \0 b$adapter.Disable()# R, L6 B2 w- f- N: {% L
2 U" A0 q& d* y$ S7 Q" a. }7 B U \- V同理可以VBS+WMI大法~
; h/ C6 `: d4 v" {) X1 z, T1 E( O这个就不说了~没啥意义了~* Z4 d( L/ w1 P& X% _5 o9 v
6 l4 `' g1 H8 l, X* D" U
其中有一个非常重要的问题就是权限控制问题!1 ` G; |6 A: l: ~0 U2 I2 @
Windows 7的UAC很严格,不能像WinXP里那样随意修改系统设置而不通知用户。9 E' p& ^- }& ]) F
如果不赋予脚本执行环境以Administrative权限的话,脚本会执行失败,WMI返回码为05,Netsh报错:“An interface with this name is not registered with the router.”
- V& O4 L* d ~) i: M0 ~因此在启动Netsh或者Powershell时需要指定 Administrative权限,可通过右键菜单Run as Administrator实现。$ l$ n) }" o% S3 @ f
然后会出现UAC,Allow即可~
$ f" q0 e/ I) z5 S. f5 Q% F" x由于UAC权限具有继承性,即一个具有Administrative权限的Process启动的Process默认是具有Administrative权限的(除非显式的禁止继承)~
# W# v2 a$ g' F2 V, h. W因此可以通过启动一个有Administrative的Cmd或者Powershell的Shell来让脚本具有Administrative权限~6 I) H; v+ U" Y# J* V7 G7 ]7 u1 M
* X0 H, [# L0 ~* O$ S" }; m该方法仅在Win7下测试通过~WinXP下不通过~6 s2 z' G& M9 A3 P
似乎原因是由于WinXP的WMI Class不支持Enable和Disable方法造成的~具体解决方案未知。 |
|