 鲜花( 3)  鸡蛋( 1)
|
方法一:NetSH大法~+ F2 n% a8 T6 y; r
采用下列Netsh脚本# y6 _' X) b# v2 ~
interface
. h- l7 ?$ A+ ]& ?2 jset interface name="Local Area Connection" admin=ENABLED/DISABLED+ u0 Y" l A, R1 }
& A& k; V2 ~' K( x, H( ?/ a/ N
方法二:Powershell+WMI大法
! O# i) i( ]6 q+ W$adapter = get-wmiobject Win32_NetworkAdapter -filter "NetConnectionID='Local Area Connection'"2 @3 N2 R9 [( I; O% q1 q' t
$adapter.Disable()
. v6 r& W8 z% P, \5 n$ g, Q/ q8 S# q0 d$ _* q; r
同理可以VBS+WMI大法~, E$ t6 \$ I5 I! |9 j' K) I* ~
这个就不说了~没啥意义了~
. I( r) S" c! ]+ H$ H; K2 c9 x
2 P$ k, p1 ?/ q0 h# ~9 T& W其中有一个非常重要的问题就是权限控制问题!
* m. p7 g& u: p, [4 A4 o f# JWindows 7的UAC很严格,不能像WinXP里那样随意修改系统设置而不通知用户。
8 A* p# ?/ A* K$ f i' h如果不赋予脚本执行环境以Administrative权限的话,脚本会执行失败,WMI返回码为05,Netsh报错:“An interface with this name is not registered with the router.”
; V9 [* s% C1 G, o3 y因此在启动Netsh或者Powershell时需要指定 Administrative权限,可通过右键菜单Run as Administrator实现。/ k+ v! p% @7 E2 D- F
然后会出现UAC,Allow即可~" S! y5 a: G& o- v) _
由于UAC权限具有继承性,即一个具有Administrative权限的Process启动的Process默认是具有Administrative权限的(除非显式的禁止继承)~/ {$ }! b8 q/ h3 |, U, O
因此可以通过启动一个有Administrative的Cmd或者Powershell的Shell来让脚本具有Administrative权限~/ E, F$ S% H* x' I7 A) y
' q9 |( I4 a' l9 @1 e该方法仅在Win7下测试通过~WinXP下不通过~3 D8 r# }3 O. R5 b
似乎原因是由于WinXP的WMI Class不支持Enable和Disable方法造成的~具体解决方案未知。 |
|