 鲜花( 3)  鸡蛋( 1)
|
方法一:NetSH大法~3 v- R4 Z; I K; z! v3 `
采用下列Netsh脚本- F) s0 v& ?# \* _4 L) _3 {: ^
interface% o# |/ x6 M; l( L
set interface name="Local Area Connection" admin=ENABLED/DISABLED( A* F3 D8 J' w) h8 j1 b2 j
* b. w! g; I. A) A6 G方法二:Powershell+WMI大法
$ ^5 c( ^ q& S1 q! C" \0 ~$adapter = get-wmiobject Win32_NetworkAdapter -filter "NetConnectionID='Local Area Connection'"9 K0 W" Y% [* E/ |2 H7 E
$adapter.Disable()
- Z, o# o% f9 b% p
) G5 A- j; X8 W同理可以VBS+WMI大法~$ S P4 A8 k [$ M- W: Z7 S) c+ S
这个就不说了~没啥意义了~$ g* u' g# e; H) @" }$ e# g
, F2 D: o) \% K) F4 m, r. b
其中有一个非常重要的问题就是权限控制问题!& x; A% N- Z" Y
Windows 7的UAC很严格,不能像WinXP里那样随意修改系统设置而不通知用户。
. ]* z9 V8 a, q如果不赋予脚本执行环境以Administrative权限的话,脚本会执行失败,WMI返回码为05,Netsh报错:“An interface with this name is not registered with the router.”
, u6 p7 h* o/ w, M5 V因此在启动Netsh或者Powershell时需要指定 Administrative权限,可通过右键菜单Run as Administrator实现。
1 _8 X7 {! v* l; Z+ n然后会出现UAC,Allow即可~
0 Q8 Y( j$ @8 T* F( m6 W& j3 ?9 a由于UAC权限具有继承性,即一个具有Administrative权限的Process启动的Process默认是具有Administrative权限的(除非显式的禁止继承)~0 D3 e' }. ~( I. t, z/ _. {- O( W" V
因此可以通过启动一个有Administrative的Cmd或者Powershell的Shell来让脚本具有Administrative权限~
& K7 ?) S# I% T0 B" ~
% p* r+ d, M, R) z9 x3 r5 r9 g该方法仅在Win7下测试通过~WinXP下不通过~ ?9 V) \ i" t/ V; }* k5 x
似乎原因是由于WinXP的WMI Class不支持Enable和Disable方法造成的~具体解决方案未知。 |
|