 鲜花( 3)  鸡蛋( 1)
|
方法一:NetSH大法~
/ |3 Z0 y$ t3 P) J& d. j采用下列Netsh脚本
# t( ~+ ]9 }2 f! v0 ?interface+ q, m* D4 x: |$ N
set interface name="Local Area Connection" admin=ENABLED/DISABLED/ p/ t- w( e: b# j$ G
3 v0 J9 B+ f0 a' ?方法二:Powershell+WMI大法+ M4 r. t5 U0 \3 Z6 T- p
$adapter = get-wmiobject Win32_NetworkAdapter -filter "NetConnectionID='Local Area Connection'"
& B3 D! V6 j) ^$ y$adapter.Disable()
& \* w5 Y. |' ^. d3 i" ~* M0 O5 c" ~2 J8 x& w; c5 w8 C
同理可以VBS+WMI大法~2 ~/ b6 \/ y, D& |& h" k) U4 p
这个就不说了~没啥意义了~
4 q# i7 [4 K6 `+ @ H# a8 |2 u) u
2 X) N! ~! C+ z* n其中有一个非常重要的问题就是权限控制问题!0 u1 S1 d$ q8 g4 L
Windows 7的UAC很严格,不能像WinXP里那样随意修改系统设置而不通知用户。
8 v, Z+ K3 m) g5 b" r0 |如果不赋予脚本执行环境以Administrative权限的话,脚本会执行失败,WMI返回码为05,Netsh报错:“An interface with this name is not registered with the router.”
; t5 G3 M# e4 }! T+ U因此在启动Netsh或者Powershell时需要指定 Administrative权限,可通过右键菜单Run as Administrator实现。
* }' X( |% v# P2 t9 F+ Y然后会出现UAC,Allow即可~, _0 [6 |& S# l8 s; u
由于UAC权限具有继承性,即一个具有Administrative权限的Process启动的Process默认是具有Administrative权限的(除非显式的禁止继承)~3 Z& }- p. M0 S( ^5 ~8 K
因此可以通过启动一个有Administrative的Cmd或者Powershell的Shell来让脚本具有Administrative权限~
4 S; D, u5 p: x
* \4 G9 Q I1 a/ S* W4 B; m8 }6 H该方法仅在Win7下测试通过~WinXP下不通过~# n0 x% ^1 V! X' ?9 g, A
似乎原因是由于WinXP的WMI Class不支持Enable和Disable方法造成的~具体解决方案未知。 |
|