 鲜花( 3)  鸡蛋( 1)
|
方法一:NetSH大法~9 e6 X; W1 b! F9 ^- k9 ?
采用下列Netsh脚本+ m/ k6 U+ q- W5 ?: W
interface
" u- U7 a4 x( ~/ P% d; X S% sset interface name="Local Area Connection" admin=ENABLED/DISABLED- e# F9 W3 W0 @, Q; g5 K- n
' V3 o2 D+ k2 F3 Y6 \5 m方法二:Powershell+WMI大法
, Q5 X# ?& M) c" r" A: G/ q$adapter = get-wmiobject Win32_NetworkAdapter -filter "NetConnectionID='Local Area Connection'"7 N; h) V! Y, W
$adapter.Disable()6 p: [# z4 }% c3 O
: e* k/ N& C' S5 N, g: d8 y同理可以VBS+WMI大法~
: L% G) u( s, u) g9 m! F! m3 L这个就不说了~没啥意义了~) ~8 A+ U7 m! @' V' V+ t/ j
) y+ y5 {% s8 G) g5 T9 u$ v$ W
其中有一个非常重要的问题就是权限控制问题!5 {% ]" g! Y' Q8 b% ~: q
Windows 7的UAC很严格,不能像WinXP里那样随意修改系统设置而不通知用户。, ^/ A* _$ o0 ?$ K4 Y; c
如果不赋予脚本执行环境以Administrative权限的话,脚本会执行失败,WMI返回码为05,Netsh报错:“An interface with this name is not registered with the router.”+ M+ ?$ R! t! {( n+ C8 `2 e3 a: C6 H
因此在启动Netsh或者Powershell时需要指定 Administrative权限,可通过右键菜单Run as Administrator实现。0 i& C- \8 ?* ?
然后会出现UAC,Allow即可~
$ ?8 L3 v3 E: ?* m J7 O: D由于UAC权限具有继承性,即一个具有Administrative权限的Process启动的Process默认是具有Administrative权限的(除非显式的禁止继承)~9 w3 \$ f* @: U V" N/ x2 E* [; B
因此可以通过启动一个有Administrative的Cmd或者Powershell的Shell来让脚本具有Administrative权限~0 J( S6 B$ F G1 H5 L5 v
6 |8 }* N. Q2 ]+ X, [: J该方法仅在Win7下测试通过~WinXP下不通过~, O( m2 L! D0 n
似乎原因是由于WinXP的WMI Class不支持Enable和Disable方法造成的~具体解决方案未知。 |
|