 鲜花( 3)  鸡蛋( 1)
|
方法一:NetSH大法~4 {1 V; L' n: v
采用下列Netsh脚本3 j# C/ J0 \2 d% ^* o
interface
& N6 M, W* E% s- q m9 a- Eset interface name="Local Area Connection" admin=ENABLED/DISABLED
+ t5 }3 [. o+ k# q+ q* S. v6 b( e3 e" A# ?
方法二:Powershell+WMI大法8 K5 g! E. s7 M8 i$ x! L
$adapter = get-wmiobject Win32_NetworkAdapter -filter "NetConnectionID='Local Area Connection'"
4 S& g( l# z0 _2 f$adapter.Disable()4 G4 G- o5 o6 ^4 j0 u8 l9 ?9 Q/ t3 \
9 F3 ]# R: P( @4 \3 {
同理可以VBS+WMI大法~3 X+ _! Z$ ?' r! l1 ?; n
这个就不说了~没啥意义了~
9 H0 X% F7 H$ O- d0 B7 A3 s+ b" l; n4 f+ m; u
其中有一个非常重要的问题就是权限控制问题!
& x- W/ l6 o. K8 DWindows 7的UAC很严格,不能像WinXP里那样随意修改系统设置而不通知用户。9 Q) L8 r4 y% g1 [
如果不赋予脚本执行环境以Administrative权限的话,脚本会执行失败,WMI返回码为05,Netsh报错:“An interface with this name is not registered with the router.”
$ {4 d, {6 r8 [% ^& @2 o; o# w因此在启动Netsh或者Powershell时需要指定 Administrative权限,可通过右键菜单Run as Administrator实现。
4 y5 V( ]# N( ^, X: v* M: ~然后会出现UAC,Allow即可~+ l( U4 f( B W- O: X4 t
由于UAC权限具有继承性,即一个具有Administrative权限的Process启动的Process默认是具有Administrative权限的(除非显式的禁止继承)~+ J/ Q) l& u ~0 ]0 M1 \
因此可以通过启动一个有Administrative的Cmd或者Powershell的Shell来让脚本具有Administrative权限~2 M; V, j, a# q/ Z: b
+ Q! l* I0 _1 S4 ` T该方法仅在Win7下测试通过~WinXP下不通过~
; C1 T- A) x/ K. w似乎原因是由于WinXP的WMI Class不支持Enable和Disable方法造成的~具体解决方案未知。 |
|