 鲜花( 3)  鸡蛋( 1)
|
方法一:NetSH大法~
% M( Y6 }) y& D( ?; V0 N6 t, M! A; `: @采用下列Netsh脚本4 U3 r; f; S) x9 y7 L- p
interface+ R9 m' ~+ X: [4 A
set interface name="Local Area Connection" admin=ENABLED/DISABLED4 s: J* R* ^6 }0 ]
- x7 k8 W* z" c2 i1 b1 ?$ s方法二:Powershell+WMI大法0 K* ?& L ?* ]( M! q7 u5 Q
$adapter = get-wmiobject Win32_NetworkAdapter -filter "NetConnectionID='Local Area Connection'"
3 {; ?% q0 M; l f+ j5 h$adapter.Disable()+ J/ M6 n* j0 k3 p w8 K* S V
. y. N5 h; r U/ |3 @; R1 t! s+ b同理可以VBS+WMI大法~% J, j& Q( M& V! z) N
这个就不说了~没啥意义了~: G( E- i) {% q
( [ ]; w* ^. K" r! B
其中有一个非常重要的问题就是权限控制问题!
5 B: k1 w1 m9 Z& BWindows 7的UAC很严格,不能像WinXP里那样随意修改系统设置而不通知用户。$ g$ F5 a8 K/ D2 J, ]% {# y
如果不赋予脚本执行环境以Administrative权限的话,脚本会执行失败,WMI返回码为05,Netsh报错:“An interface with this name is not registered with the router.”( P/ Y3 e$ b; c
因此在启动Netsh或者Powershell时需要指定 Administrative权限,可通过右键菜单Run as Administrator实现。
% r! j3 H8 P' e# q) `然后会出现UAC,Allow即可~
6 m0 H8 m1 {2 r. t- G, L由于UAC权限具有继承性,即一个具有Administrative权限的Process启动的Process默认是具有Administrative权限的(除非显式的禁止继承)~. G5 Z4 [3 P' o7 f2 c
因此可以通过启动一个有Administrative的Cmd或者Powershell的Shell来让脚本具有Administrative权限~
9 P& o$ V; S ^& L( L, _3 ~& F' N1 g3 f8 K
该方法仅在Win7下测试通过~WinXP下不通过~
/ R2 Q1 H: T; |. W3 k3 t8 k似乎原因是由于WinXP的WMI Class不支持Enable和Disable方法造成的~具体解决方案未知。 |
|