 鲜花( 3)  鸡蛋( 1)
|
方法一:NetSH大法~1 W2 m3 T! g' }' N& L: T+ l+ N2 `
采用下列Netsh脚本
3 U; z2 d2 C+ l" M1 z5 s. p$ G$ Yinterface8 c1 R: P! a) Q- b
set interface name="Local Area Connection" admin=ENABLED/DISABLED
1 l5 _- K5 X9 l$ [9 t0 p$ ]; N& V9 p4 R/ M0 y2 @3 [
方法二:Powershell+WMI大法9 _" j) ^" o* |# z- ^0 [! [
$adapter = get-wmiobject Win32_NetworkAdapter -filter "NetConnectionID='Local Area Connection'"
, F, Q1 I% k' |9 W- V2 g7 F$adapter.Disable()
' k0 {) V$ s6 g0 w; B0 s" Y$ p
" J, L( e. y3 p同理可以VBS+WMI大法~8 Z, W6 P2 _& h9 [6 r, y8 T
这个就不说了~没啥意义了~
. o$ I1 \+ Q' E9 Q5 N
6 x" R2 g4 x6 z! R! q0 P其中有一个非常重要的问题就是权限控制问题!
8 S g8 x3 U! MWindows 7的UAC很严格,不能像WinXP里那样随意修改系统设置而不通知用户。
1 u. U Y; C8 V& {2 f如果不赋予脚本执行环境以Administrative权限的话,脚本会执行失败,WMI返回码为05,Netsh报错:“An interface with this name is not registered with the router.”
* ~& r! i! A6 Q因此在启动Netsh或者Powershell时需要指定 Administrative权限,可通过右键菜单Run as Administrator实现。
9 e S h* m# ]9 h0 ~2 G4 d然后会出现UAC,Allow即可~
p1 m: A; w" C x! V, ]% e由于UAC权限具有继承性,即一个具有Administrative权限的Process启动的Process默认是具有Administrative权限的(除非显式的禁止继承)~9 i2 {0 p2 q- N
因此可以通过启动一个有Administrative的Cmd或者Powershell的Shell来让脚本具有Administrative权限~- w9 o; J: a' _5 V3 t! f8 A' z* Z
7 _; I" j9 V! a$ t g
该方法仅在Win7下测试通过~WinXP下不通过~
! I' J: L6 X6 B4 b2 O0 `5 h似乎原因是由于WinXP的WMI Class不支持Enable和Disable方法造成的~具体解决方案未知。 |
|