 鲜花( 3)  鸡蛋( 1)
|
方法一:NetSH大法~7 y! `. g. e( N) m
采用下列Netsh脚本
' _) u/ s" M" _' v3 @8 Linterface3 ?. y) F7 \5 b& i3 T9 n
set interface name="Local Area Connection" admin=ENABLED/DISABLED: L0 F, W7 X) n; u% |
0 p( u, p, V, C$ e4 o# `+ c2 [- L
方法二:Powershell+WMI大法) f5 ~% y/ }5 K2 W+ D
$adapter = get-wmiobject Win32_NetworkAdapter -filter "NetConnectionID='Local Area Connection'" ?9 T3 @+ [2 Z0 \/ |! j
$adapter.Disable()
$ S* g/ l( T& y" q/ O
. j& _9 C! \% ~! y4 a同理可以VBS+WMI大法~2 I" ]+ j3 v; e$ y& i5 Y
这个就不说了~没啥意义了~+ S. L" O9 v# a8 Q+ s2 W5 M- }
* g! U& p6 f3 g# a% h H3 ]
其中有一个非常重要的问题就是权限控制问题!: t0 h t; H7 d2 t
Windows 7的UAC很严格,不能像WinXP里那样随意修改系统设置而不通知用户。; d! h" s2 \1 m9 b) k$ I' F* w% c
如果不赋予脚本执行环境以Administrative权限的话,脚本会执行失败,WMI返回码为05,Netsh报错:“An interface with this name is not registered with the router.”0 K0 `1 r3 O: M* M: {, F
因此在启动Netsh或者Powershell时需要指定 Administrative权限,可通过右键菜单Run as Administrator实现。
/ w" k( h, K- a8 R! @然后会出现UAC,Allow即可~
- i+ }' [( ]" U5 B. U. v由于UAC权限具有继承性,即一个具有Administrative权限的Process启动的Process默认是具有Administrative权限的(除非显式的禁止继承)~+ n c# I; ]1 t1 M- m# @
因此可以通过启动一个有Administrative的Cmd或者Powershell的Shell来让脚本具有Administrative权限~
! E! A" w8 s* w) U, w; U* h* J ]3 @- i5 N3 _# i
该方法仅在Win7下测试通过~WinXP下不通过~
7 A/ j+ u$ [3 w. e& H# t似乎原因是由于WinXP的WMI Class不支持Enable和Disable方法造成的~具体解决方案未知。 |
|