 鲜花( 3)  鸡蛋( 1)
|
方法一:NetSH大法~6 Q2 j( L- u' W
采用下列Netsh脚本
; r, C! c8 F2 \) p6 m" T9 binterface7 ]; _$ {5 ^% t' {
set interface name="Local Area Connection" admin=ENABLED/DISABLED% d# y* Z" b% C4 w5 j9 n
. W1 U' ]# G5 N# K' c
方法二:Powershell+WMI大法
. ]6 T* W1 [2 d) } S$adapter = get-wmiobject Win32_NetworkAdapter -filter "NetConnectionID='Local Area Connection'"9 w$ i$ M/ H8 v% y1 s2 f
$adapter.Disable()
, b B9 R' Y, n5 P. Y
+ Q( U( f, ~" E r同理可以VBS+WMI大法~9 z8 E: t3 V$ s
这个就不说了~没啥意义了~
8 ~8 d7 ]3 c; o2 _# ?, N( D. Y' |5 {; q6 {- X% O
其中有一个非常重要的问题就是权限控制问题!
% O8 D" V: d/ _2 d" _/ [' LWindows 7的UAC很严格,不能像WinXP里那样随意修改系统设置而不通知用户。# [' Y9 P$ j, Y
如果不赋予脚本执行环境以Administrative权限的话,脚本会执行失败,WMI返回码为05,Netsh报错:“An interface with this name is not registered with the router.”& }% |; {: X' p# B1 K7 K
因此在启动Netsh或者Powershell时需要指定 Administrative权限,可通过右键菜单Run as Administrator实现。1 l2 X# k: x- P+ f6 B1 f
然后会出现UAC,Allow即可~
5 t. D5 f% G3 T# y' f* T! J由于UAC权限具有继承性,即一个具有Administrative权限的Process启动的Process默认是具有Administrative权限的(除非显式的禁止继承)~& G/ [* e2 |' z$ L" ?
因此可以通过启动一个有Administrative的Cmd或者Powershell的Shell来让脚本具有Administrative权限~
# D" e, k4 ?$ I5 @ ^0 @8 T) m; S6 o) X4 m) h* ^3 g
该方法仅在Win7下测试通过~WinXP下不通过~
' ?# N8 p+ V; ~( s$ F4 A, T" F( A似乎原因是由于WinXP的WMI Class不支持Enable和Disable方法造成的~具体解决方案未知。 |
|