 鲜花( 3)  鸡蛋( 1)
|
方法一:NetSH大法~
% o0 N, L6 U6 U3 F; R6 S1 u2 E! j [采用下列Netsh脚本2 m# \( s2 Q" A+ x; N
interface: `. p. O& o L m$ \9 b
set interface name="Local Area Connection" admin=ENABLED/DISABLED
7 L; z) |$ ], j: Z2 Z/ G9 [2 h5 g1 E8 ?) t5 |$ O( M, c8 X- V
方法二:Powershell+WMI大法2 W' _3 D+ t9 u) S& W$ H
$adapter = get-wmiobject Win32_NetworkAdapter -filter "NetConnectionID='Local Area Connection'"5 r; v5 \5 @ L* q7 l0 L8 o' Z D
$adapter.Disable()
- p0 Q$ h0 C$ V7 }8 Y: u
5 ]% K' u0 W1 X" ]同理可以VBS+WMI大法~
* l+ E) M! h4 [这个就不说了~没啥意义了~
2 l* s# M3 I! p" f N+ n
( ~" q/ A* d, F! r+ ?) L" _2 r其中有一个非常重要的问题就是权限控制问题!
$ f" j) s K0 ?" cWindows 7的UAC很严格,不能像WinXP里那样随意修改系统设置而不通知用户。
( B8 |2 @ F3 S; @如果不赋予脚本执行环境以Administrative权限的话,脚本会执行失败,WMI返回码为05,Netsh报错:“An interface with this name is not registered with the router.”
3 r; g/ r3 t& Z* u* K因此在启动Netsh或者Powershell时需要指定 Administrative权限,可通过右键菜单Run as Administrator实现。3 v" F2 m6 M0 S7 \) S& Z1 r
然后会出现UAC,Allow即可~
$ b/ Y. [6 }/ W( H' o由于UAC权限具有继承性,即一个具有Administrative权限的Process启动的Process默认是具有Administrative权限的(除非显式的禁止继承)~
, X C$ t( @) E8 M因此可以通过启动一个有Administrative的Cmd或者Powershell的Shell来让脚本具有Administrative权限~
0 F% D' b! N. p% z' g7 x3 n* v% L+ i/ G2 @
该方法仅在Win7下测试通过~WinXP下不通过~4 c0 c: {# x/ P* k# B4 s# Z. h
似乎原因是由于WinXP的WMI Class不支持Enable和Disable方法造成的~具体解决方案未知。 |
|