 鲜花( 3)  鸡蛋( 1)
|
方法一:NetSH大法~" y9 u2 w9 G( ?- O1 q' E( E, g j8 p
采用下列Netsh脚本: M1 K% h& u/ T8 r) M ^1 `
interface
+ M# }+ \" F3 e8 X, I; kset interface name="Local Area Connection" admin=ENABLED/DISABLED
6 _) f% b- S' V5 r' v5 S4 D
4 Y+ s- ~) M8 K3 e% M# y8 z6 f方法二:Powershell+WMI大法
2 u, L9 ?$ B: s5 D' s, h! E$adapter = get-wmiobject Win32_NetworkAdapter -filter "NetConnectionID='Local Area Connection'"
+ O3 `% Q6 g! [' Z$adapter.Disable()
/ F- p3 L8 |3 j
g0 R5 R+ f' n6 j同理可以VBS+WMI大法~$ h* r# v1 V* I, m/ e! R
这个就不说了~没啥意义了~- i a' V" q' f d/ v& l
/ u# Z" G( U7 [其中有一个非常重要的问题就是权限控制问题!% Z$ t X- P; m' n& g* I' @- f
Windows 7的UAC很严格,不能像WinXP里那样随意修改系统设置而不通知用户。
6 H& m* C- Q$ b0 r2 h如果不赋予脚本执行环境以Administrative权限的话,脚本会执行失败,WMI返回码为05,Netsh报错:“An interface with this name is not registered with the router.”
, r# D( Z& w* `3 T' V# E因此在启动Netsh或者Powershell时需要指定 Administrative权限,可通过右键菜单Run as Administrator实现。
. @3 \/ ~- H7 y$ |. W8 |4 p然后会出现UAC,Allow即可~# D3 Z- o7 P) {, y
由于UAC权限具有继承性,即一个具有Administrative权限的Process启动的Process默认是具有Administrative权限的(除非显式的禁止继承)~
1 h# D5 U# |0 J6 t& t; r+ T3 y. l& T2 {因此可以通过启动一个有Administrative的Cmd或者Powershell的Shell来让脚本具有Administrative权限~
0 }2 Q0 L% ^, X" S3 e, K1 q
, J+ g9 \, g5 l8 L3 }该方法仅在Win7下测试通过~WinXP下不通过~$ X7 z% w7 ~9 Q
似乎原因是由于WinXP的WMI Class不支持Enable和Disable方法造成的~具体解决方案未知。 |
|