 鲜花( 3)  鸡蛋( 1)
|
方法一:NetSH大法~3 q5 j4 B7 e8 ?) v) x, D
采用下列Netsh脚本
2 T, v3 }$ t# Dinterface$ N. a, @: G& ^& z/ I9 G2 G! B
set interface name="Local Area Connection" admin=ENABLED/DISABLED k% `5 S' g: W- o7 t; a: ~9 R5 F
; L% @' X& f9 T: M7 c9 c方法二:Powershell+WMI大法8 |9 M2 N2 K, l+ }
$adapter = get-wmiobject Win32_NetworkAdapter -filter "NetConnectionID='Local Area Connection'"
! _* P" V% S, g- K, k9 F7 d$adapter.Disable()
$ l% S8 t0 `! l
) O/ L5 |( E. ?4 {6 o同理可以VBS+WMI大法~# c( F) m" X1 K8 n5 k0 [# T4 k! C
这个就不说了~没啥意义了~8 y" V2 G3 G: N% M- x/ o' g
7 E4 ]# s) P4 l5 O( |) R
其中有一个非常重要的问题就是权限控制问题!
6 L7 m/ s# n: K6 `/ Y1 lWindows 7的UAC很严格,不能像WinXP里那样随意修改系统设置而不通知用户。3 G0 G; F8 @! X1 R2 X \
如果不赋予脚本执行环境以Administrative权限的话,脚本会执行失败,WMI返回码为05,Netsh报错:“An interface with this name is not registered with the router.”
! Z* ?: m* C& v因此在启动Netsh或者Powershell时需要指定 Administrative权限,可通过右键菜单Run as Administrator实现。" ^% t2 o, Y; H6 h; B: g! o
然后会出现UAC,Allow即可~
2 p$ ^5 B) U5 a/ r由于UAC权限具有继承性,即一个具有Administrative权限的Process启动的Process默认是具有Administrative权限的(除非显式的禁止继承)~
3 {) R7 H( Q9 t8 v9 D: G r4 b/ b因此可以通过启动一个有Administrative的Cmd或者Powershell的Shell来让脚本具有Administrative权限~) J/ z- j7 q3 g5 B6 J
9 {5 h( F8 T9 }+ C9 r该方法仅在Win7下测试通过~WinXP下不通过~$ G {4 m- f1 y" K& s8 F
似乎原因是由于WinXP的WMI Class不支持Enable和Disable方法造成的~具体解决方案未知。 |
|