 鲜花( 3)  鸡蛋( 1)
|
方法一:NetSH大法~& \9 t' `- z, h' [4 j: f/ B
采用下列Netsh脚本' `0 M Z8 G$ h( Q- \$ b& F9 {
interface- q" Z- k4 c0 O8 q& W H# F8 W) p
set interface name="Local Area Connection" admin=ENABLED/DISABLED' \7 v& K0 T+ w
' X% w$ e. V* Z9 Z, b$ m; Z) r
方法二:Powershell+WMI大法
9 O/ w. G& W. l# d4 B' Z" ~$adapter = get-wmiobject Win32_NetworkAdapter -filter "NetConnectionID='Local Area Connection'"
" h4 s9 f. j- u9 f; l$adapter.Disable()
$ {! a* O5 s) d# [2 w
5 U9 F* Z6 B$ s7 |同理可以VBS+WMI大法~
# M( @% x, v; Z& a/ s) X {! }6 L/ `这个就不说了~没啥意义了~/ e# }5 O$ m0 \' N3 G
0 e3 o. m) R9 |7 |) l) k
其中有一个非常重要的问题就是权限控制问题!3 B3 o8 c K, U. U+ Y& g. {8 z" P
Windows 7的UAC很严格,不能像WinXP里那样随意修改系统设置而不通知用户。
+ V& n! A9 ?. [9 w$ A/ @0 y0 W如果不赋予脚本执行环境以Administrative权限的话,脚本会执行失败,WMI返回码为05,Netsh报错:“An interface with this name is not registered with the router.”
4 v3 ~, a# B! k! b, C, P6 u因此在启动Netsh或者Powershell时需要指定 Administrative权限,可通过右键菜单Run as Administrator实现。
; m. i4 |7 H5 q) t" m然后会出现UAC,Allow即可~
8 ]# T. ^% U4 a3 \7 g& ~7 _由于UAC权限具有继承性,即一个具有Administrative权限的Process启动的Process默认是具有Administrative权限的(除非显式的禁止继承)~
" h( w. t& M' J' p s# b因此可以通过启动一个有Administrative的Cmd或者Powershell的Shell来让脚本具有Administrative权限~9 _$ z# |% Z- i+ Q! W* d7 B* ^, b
& i% {5 s( f; j5 W3 F# D该方法仅在Win7下测试通过~WinXP下不通过~ ?0 V" A2 ~% f0 B2 q
似乎原因是由于WinXP的WMI Class不支持Enable和Disable方法造成的~具体解决方案未知。 |
|