 鲜花( 3)  鸡蛋( 1)
|
方法一:NetSH大法~
, B+ V2 k& T" i) }* v4 G) a: W采用下列Netsh脚本% I; Z/ |- Z$ Y5 p
interface
& Z3 g% i# I# f7 F; r1 l: [set interface name="Local Area Connection" admin=ENABLED/DISABLED
* E, s6 y; `2 N; Q3 |* S7 Q( I% h9 r7 V6 e6 @' J0 {
方法二:Powershell+WMI大法) z1 q. ~4 T9 H" [. G7 E
$adapter = get-wmiobject Win32_NetworkAdapter -filter "NetConnectionID='Local Area Connection'"
7 C4 A8 [" e% P" D/ c3 U+ ^ W% M( k$adapter.Disable()
" d) L( y# x- Q+ G0 t! x" I% S7 p8 C* f* Q6 N9 ]2 _
同理可以VBS+WMI大法~
, u0 F4 a$ b; B( w6 u" H8 [这个就不说了~没啥意义了~8 _8 W4 q( r$ \$ |0 W4 |4 p
- @, s9 ]9 L& i
其中有一个非常重要的问题就是权限控制问题!
5 D4 H3 J# O% {7 x6 a) uWindows 7的UAC很严格,不能像WinXP里那样随意修改系统设置而不通知用户。0 W u1 f; M' W1 `
如果不赋予脚本执行环境以Administrative权限的话,脚本会执行失败,WMI返回码为05,Netsh报错:“An interface with this name is not registered with the router.”2 b9 n* T% l1 A& `5 u: O8 U
因此在启动Netsh或者Powershell时需要指定 Administrative权限,可通过右键菜单Run as Administrator实现。
7 I- `) _4 A7 V7 Y+ n& z$ k8 E然后会出现UAC,Allow即可~
! ~, [* l) C8 R7 l由于UAC权限具有继承性,即一个具有Administrative权限的Process启动的Process默认是具有Administrative权限的(除非显式的禁止继承)~) }4 a3 J S3 I7 S& X
因此可以通过启动一个有Administrative的Cmd或者Powershell的Shell来让脚本具有Administrative权限~
& e% {0 f+ \. P' m; B' }3 k' W" ]8 v' C, |
该方法仅在Win7下测试通过~WinXP下不通过~
7 L* R: o9 J. T, N0 e t x: [, P似乎原因是由于WinXP的WMI Class不支持Enable和Disable方法造成的~具体解决方案未知。 |
|