 鲜花( 3)  鸡蛋( 1)
|
方法一:NetSH大法~
- o! |: s, W" x) o0 {" M采用下列Netsh脚本
8 T2 a# U+ k* {8 O1 K1 Xinterface
]& \4 T3 B$ G7 Pset interface name="Local Area Connection" admin=ENABLED/DISABLED2 H5 ?. I; J( ~4 j( k
5 ~- I: s; K: {$ H6 M0 |
方法二:Powershell+WMI大法
( d. Z. B; J! ?7 f& I; a1 j; K$adapter = get-wmiobject Win32_NetworkAdapter -filter "NetConnectionID='Local Area Connection'"
e% o4 U/ A- q; n+ V5 l- B0 E$adapter.Disable()
4 j% C( s9 w/ @3 _' P: r8 G8 L. l* `1 b3 ^( _* a- o9 Q
同理可以VBS+WMI大法~
' Q0 ]: K7 a3 v# n$ n这个就不说了~没啥意义了~' o2 R9 K& R3 P7 l
7 j8 U4 @9 A- b9 C) N f; P
其中有一个非常重要的问题就是权限控制问题!" G* m: F9 M0 S1 Z! y
Windows 7的UAC很严格,不能像WinXP里那样随意修改系统设置而不通知用户。3 f: q. e: S3 L
如果不赋予脚本执行环境以Administrative权限的话,脚本会执行失败,WMI返回码为05,Netsh报错:“An interface with this name is not registered with the router.”% \- ~ t: y- A3 s; O x
因此在启动Netsh或者Powershell时需要指定 Administrative权限,可通过右键菜单Run as Administrator实现。4 j, c$ X, Y" y7 Y6 k
然后会出现UAC,Allow即可~, o: j* V4 F! s* ]$ p& H0 u7 G
由于UAC权限具有继承性,即一个具有Administrative权限的Process启动的Process默认是具有Administrative权限的(除非显式的禁止继承)~
2 e* q0 G. [7 R5 a k! y因此可以通过启动一个有Administrative的Cmd或者Powershell的Shell来让脚本具有Administrative权限~
2 v' L7 Y8 g- g( ?2 Z5 ]2 {; ?) ], @ `) ^# a, S1 M
该方法仅在Win7下测试通过~WinXP下不通过~
8 X# L2 T9 H* V o; M似乎原因是由于WinXP的WMI Class不支持Enable和Disable方法造成的~具体解决方案未知。 |
|