关于Shell.Application对象的一些简单尝试

本文介绍使用VBScript实现自动化任务的方法,包括执行程序、创建文件夹、浏览文件夹内容等。通过具体代码实例展示了如何利用Shell.Application对象进行桌面级自动化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Set shellapp = CreateObject("Shell.Application")

 

'获取所有桌面的窗口:

Set oWindows = shellapp.Windows

 

'执行文件:

shellapp.ShellExecute("ipconfig.exe","/all") 

shellapp.ShellExecute("notepad.exe")

 

'创建子文件夹:

 sDir= "c:/automation"

 set oFolder = shellapp.NameSpace(sDir) 

 oFolder.NewFolder("Newfolder")

 

'获取文件夹内容信息:

 set oitems = oFolder.items
 For each oitem in oitems
  print oitem.name
 Next

 

'以资源管理器的形式浏览指定的文件夹内容

shellapp.Explore "c:/automation"

### 代码解析 提供的代码片段为: ```bat %1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit ``` 该代码的主要目的是通过VBScript调用Windows Shell执行命令,从而以管理员权限运行批处理脚本。以下是对代码的详细解析: #### 功能概述 该命令的核心作用是尝试以管理员权限重新启动当前脚本。如果当前脚本未以管理员权限运行,则会通过弹出UAC(用户账户控制)提示请求权限,从而提升脚本的执行权限[^1]。 #### 参数解析 - **`%1`**:这是批处理脚本的第一个参数。通常用于传递参数到脚本中,但在该代码中,`%1` 的作用是作为占位符,防止脚本直接运行而跳过权限检查。 - **`mshta`**:这是一个Windows命令行工具,用于执行HTML应用程序(HTA)。在该命令中,`mshta` 被用来运行一段VBScript代码。 - **`vbscript:CreateObject("Shell.Application").ShellExecute(...)`**:这是VBScript代码,用于创建 `Shell.Application` 对象,并调用其 `ShellExecute` 方法。该方法可以以指定的权限级别运行程序。 - **`"cmd.exe"`**:指定要执行的应用程序,这里是Windows命令行解释器。 - **`"/c %~s0 ::"`**:传递给 `cmd.exe` 的参数。其中: - **`/c`** 表示命令执行完成后关闭命令行窗口。 - **`%~s0`** 是批处理脚本自身的路径,使用 `%~s0` 可以确保路径为短格式(8.3格式),避免长路径带来的问题。 - **`::`** 是批处理中的注释符号,表示后面的内容不会被解析为命令参数。 - **`""`**:表示不指定工作目录,使用默认的系统目录。 - **`"runas"`**:指定以管理员权限运行目标程序。该参数会触发UAC提示,要求用户确认权限提升。 - **`1`**:表示窗口的显示方式。`1` 表示正常显示窗口。 - **`(window.close)`**:这是VBScript代码的一部分,用于在执行完命令后关闭 `mshta` 所打开的窗口。 - **`&&exit`**:在命令成功执行后退出当前的命令行窗口。 #### 代码流程 1. **检查权限**:由于代码中使用了 `runas` 参数,`ShellExecute` 方法会尝试以管理员权限运行 `cmd.exe`,并执行当前脚本。 2. **触发UAC提示**:如果当前用户具有管理员权限,则会弹出UAC提示,要求用户确认是否允许程序以管理员身份运行。 3. **重新运行脚本**:如果用户确认权限提升,则会以管理员权限运行 `cmd.exe`,并执行当前脚本(`%~s0`)。 4. **关闭窗口**:在VBScript执行完成后,调用 `window.close` 关闭 `mshta` 所打开的窗口。 5. **退出当前命令行窗口**:通过 `&&exit` 命令,确保当前的命令行窗口在脚本执行完成后关闭。 #### 代码用途 该代码通常用于批处理脚本的开头,确保脚本以管理员权限运行。如果脚本需要执行需要管理员权限的操作(例如修改系统设置、安装软件、修改防火墙规则等),则必须通过此方法提升权限。 #### 示例用法 以下是一个完整的示例,展示如何在批处理脚本中使用该代码: ```bat @echo off %1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit cd /d "%~dp0" echo 正在以管理员权限运行脚本... pause ``` 在上述示例中,脚本首先尝试以管理员权限重新运行自己。如果用户确认UAC提示,则会以管理员权限执行后续的命令。 ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值