 鲜花( 3)  鸡蛋( 1)
|
方法一:NetSH大法~* ~ y6 { V: b; k7 U
采用下列Netsh脚本
) M- t, L5 r$ Jinterface' m7 _' Y S; V1 e9 @9 w! e- v
set interface name="Local Area Connection" admin=ENABLED/DISABLED" }2 e" d, x8 m
; b% B% j- A' k/ T$ C( I% o方法二:Powershell+WMI大法
5 d/ a+ y% ?: G$ Z$adapter = get-wmiobject Win32_NetworkAdapter -filter "NetConnectionID='Local Area Connection'"
. e6 Z. o5 ~8 t5 |, E$adapter.Disable()$ ]0 H6 f2 `+ q9 f" r
7 `6 N, I( _ [+ q
同理可以VBS+WMI大法~ I- \: J8 j- b/ a- x$ c
这个就不说了~没啥意义了~
) U* L. T. J- p/ L( i1 w5 Z1 N5 @: l( G
其中有一个非常重要的问题就是权限控制问题!' D+ Q+ D V: V8 L
Windows 7的UAC很严格,不能像WinXP里那样随意修改系统设置而不通知用户。
* _* V% _' S( r& V/ z如果不赋予脚本执行环境以Administrative权限的话,脚本会执行失败,WMI返回码为05,Netsh报错:“An interface with this name is not registered with the router.”
0 ?- c* E, S7 H9 w- s( n因此在启动Netsh或者Powershell时需要指定 Administrative权限,可通过右键菜单Run as Administrator实现。
" h0 L1 G1 E: h+ N, S! J0 T3 J然后会出现UAC,Allow即可~
4 P7 J# _0 |/ D$ B9 ]由于UAC权限具有继承性,即一个具有Administrative权限的Process启动的Process默认是具有Administrative权限的(除非显式的禁止继承)~0 N# X) q1 W8 }1 L* r* \" |
因此可以通过启动一个有Administrative的Cmd或者Powershell的Shell来让脚本具有Administrative权限~
8 W# T# |/ u) h+ F$ a3 E; k0 t* s' A+ h! } |
该方法仅在Win7下测试通过~WinXP下不通过~
, n5 X3 ^, g! l7 ~% I7 B, M4 E似乎原因是由于WinXP的WMI Class不支持Enable和Disable方法造成的~具体解决方案未知。 |
|