 鲜花( 3)  鸡蛋( 1)
|
方法一:NetSH大法~( R# s, v! @6 o) g. O1 ~, X: _
采用下列Netsh脚本: |9 m6 B2 ~7 P( X7 h" [2 G! _1 s) r
interface
9 ?$ n$ Y8 N% k1 x% @set interface name="Local Area Connection" admin=ENABLED/DISABLED
: }/ [' f' X& J1 J, ], A7 H+ J
0 \1 p7 O2 R/ B. s6 I方法二:Powershell+WMI大法2 [% {$ h3 h% u1 v9 n9 G6 H3 q. N+ X1 `
$adapter = get-wmiobject Win32_NetworkAdapter -filter "NetConnectionID='Local Area Connection'"
+ c& b) `: T3 d4 S% I5 k- K$adapter.Disable()
' Q) x$ j) A" K" ~" I
1 d* h0 r3 ]9 [0 W Z( j" X同理可以VBS+WMI大法~
& N* ]) A9 v. W' C+ O! p这个就不说了~没啥意义了~! p n: A9 I, |& D3 e
4 M% r6 A* f7 R2 ]其中有一个非常重要的问题就是权限控制问题!
7 C+ X% n$ I4 y; u2 j& Q" TWindows 7的UAC很严格,不能像WinXP里那样随意修改系统设置而不通知用户。6 K3 u: z8 n8 O) q" |
如果不赋予脚本执行环境以Administrative权限的话,脚本会执行失败,WMI返回码为05,Netsh报错:“An interface with this name is not registered with the router.”
) {3 k* B0 R1 k" ]8 J2 r$ A因此在启动Netsh或者Powershell时需要指定 Administrative权限,可通过右键菜单Run as Administrator实现。* H8 u- ], C9 N/ r4 u8 A
然后会出现UAC,Allow即可~
& Y4 R2 I5 x4 O6 E( t" f. l由于UAC权限具有继承性,即一个具有Administrative权限的Process启动的Process默认是具有Administrative权限的(除非显式的禁止继承)~
/ y. v* o% p5 N- y3 _因此可以通过启动一个有Administrative的Cmd或者Powershell的Shell来让脚本具有Administrative权限~% M+ _1 I( R$ @2 Q* i! K% i
( i$ d$ y" ~$ l4 Y9 U) A8 l
该方法仅在Win7下测试通过~WinXP下不通过~
2 m0 c, Y0 J/ {$ \ q4 {似乎原因是由于WinXP的WMI Class不支持Enable和Disable方法造成的~具体解决方案未知。 |
|